Как контейнеры sevlet управляют созданными идентификаторами jsessionid?

#java #servlets #jsessionid

#java #сервлеты #jsessionid

Вопрос:

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

Ответ №1:

Если HttpSession не удается найти на основе заданного JSESSIONID, он будет просто проигнорирован. Новый будет создан всякий раз, когда этого потребует код, и будет установлен новый файл cookie JSESSIONID с новым идентификатором.

Комментарии:

1. Хорошо .. tx .. в таком случае, есть идеи, как я могу распространить сеанс, созданный моим интерфейсом, на мой серверный сервер через http? я хочу, чтобы серверная часть была с отслеживанием состояния

2. Вам нужно будет реализовать свой собственный менеджер сеансов. Вы даже можете сделать это на уровне serletcontainer. Например, в Tomcat вам нужно реализовать org.apache.catalina.Manager и настроить в context.xml . В противном случае вам придется самостоятельно поддерживать абстракции сеанса в области приложения. Будьте осторожны с этим, это очень подвержено атакам. Я бы предпочел поддерживать состояние, просто требуя входа в систему, а затем связывая данные только с конкретным пользователем.