2012-02-07 3 views
0

У меня есть две страницы JSP: Login.jsp и Main.jsp.Создание нежелательного сеанса

Для Шаблон URL / У меня есть сервлет, который делает это:

HttpSession session = request.getSession(false); 
if (session == null) { 
    response.sendRedirect("Login.jsp"); 
} else { 
    response.sendRedirect("Home.jsp"); 
} 

две страницы JSP пусты, как сейчас.

Когда я просматриваю localhost:8080/appname/ в моем браузере, оно направляется в Login.jsp как ожидалось. Но когда я пытаюсь просмотреть его во второй раз, он направляется на Home.jsp.

Когда я пытаюсь отлаживать, session не имеет значения null, и я могу найти файл cookie с JSESSIONID в моем браузере Chrome.

Я не делаю getSession() в другом месте.

Может ли кто-нибудь объяснить мне, что здесь происходит?

Спасибо.

ответ

1

JSP создает сеанс по умолчанию. Если вы не хотите сеанса, добавьте

<%@ page session="false" %> 
-1

Не только jsp, любой запрос на сервере запустит сеанс. Итак, что происходит в первый раз, когда вы не получаете какой-либо сеанс, но в следующий раз, когда вы получаете сеанс, который был создан в предыдущем запросе.

Что вы можете сделать, это: а) Установите некоторый атрибут сессии и вместо проверки проверки сеанса для атрибута, который будет установлен только после того, как пользователь вошел в систему б) вы можете попробовать недействительности сеанс каждый раз.. Также убедитесь, что даже когда вы аутентифицируете пользователя, аннулируйте сеанс, а затем сгенерируйте сеанс, а затем установите атрибут сеанса.

+0

>> любой запрос на сервере запустит сеанс – rickz

+0

Это неправда. – rickz

+0

Сервлет не создает сеанс, если вы не написали код для этого. – rickz

Смежные вопросы