При каких условиях создается JSESSIONID?



когда / каковы условия, когда a - Это?



это за домен? Например, если у меня есть сервер приложений Tomcat, и я развертываю несколько веб-приложений, будет другой JSESSIONID создается в контексте (веб-приложение), или он является общим для всех веб-приложений, если они являются одним доменом?

503   5  

5 ответов:

jsessionid cookie создается/отправляется при создании сеанса. Сеанс создается, когда ваш код вызывает request.getSession() или request.getSession(true) в первый раз. Если вы просто хотите получить сеанс, но не создать его, если он не существует, используйте request.getSession(false) -- это вернет вам сеанс или null. В этом случае новый сеанс не создается, а файл cookie JSESSIONID не отправляется. (Это также означает, что сессия не обязательно создается по первому запросу... вы и ваш код находитесь под контролем , когда сеанс)

сеансы для каждого контекста:

SRV.7.3 Рамках Сессии

HttpSession объекты должны быть ограничены по адресу приложение (или контекст сервлета) уровень. Основной механизм, такой как cookie используется для установления сессия, может быть одинаковым для разных контексты, но объект, на который ссылаются, включая атрибуты в этом объект, никогда не должен быть разделен между контекстах контейнер.

(сервлет 2.4 спецификация)

Update: каждый вызов страницы JSP неявно создает новый сеанс, если еще нет сеанса. Это можно отключить с помощью session='false' директива страницы, в этом случае переменная сеанса вообще недоступна на странице JSP.

вот некоторые сведения об еще одном источнике JSESSIONID cookie:

Я просто отлаживал какой-то Java-код, который работает на сервере tomcat. Я не звонил request.getSession() явно в любом месте моего кода, но я заметил, что a JSESSIONID куки все еще устанавливался.

я, наконец, взглянул на сгенерированный код Java, соответствующий JSP в рабочем каталоге под Tomcat.

похоже, что, нравится вам это или нет, если вы вызываете JSP из a сервлет, JSESSIONID будет создан!

добавлено: я только что обнаружил это, добавив следующую директиву JSP:

<%@ page session="false" %>

вы можете отключить параметр JSESSIONID С помощью JSP.

исправление: пожалуйста, проголосуйте за ответ Петра Штибраного - он более правильный и полный!

" JSESSIONID " - это уникальный идентификатор сеанса http -смотрите javadoc здесь. В javadoc вы найдете следующее предложение: "информация о сеансе относится только к текущему веб-приложению (ServletContext), поэтому информация, хранящаяся в одном контексте, не будет непосредственно видна в другом."

поэтому, когда вы впервые попали на сайт, создается новый сеанс и привязан к SevletContext. При развертывании нескольких приложений сеанс не является общим.

вы также можете аннулировать текущий сеанс и, следовательно, создать новый. например, при переключении с http на https (после входа в систему), это очень хорошая идея, чтобы создать новую сессию.

надеюсь, это ответ на ваш вопрос.

будьте осторожны, если ваша страница включает в себя другие .jsp или .jspf, который (фрагмент)! Если вы не установите

<%@ page session="false" %>

на них ТАКЖЕ Родительская страница в конечном итоге начнет новый сеанс и установит файл cookie JSESSIONID.

для .страницы jspf в частности, это происходит, если вы настроили свой веб.xml с таким сниппетом:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jspf</url-pattern>
    </jsp-property-group>
</jsp-config>

для того, чтобы включить сценарии внутри них.

для ссылок, созданных в JSP с пользовательскими тегами, я должен был использовать

<%@ page session="false" %>

в JSP

и

request.getSession().invalidate();

в действие Struts

Comments

    Ничего не найдено.