2013-08-05 4 views
0

У меня вопрос о сеансе в Tomcat.Tomcat session expired handling

Когда время окончания сеанса Tomcat истекло 30 минут, я знаю.

Я хочу показать пользователям страницу с истекшим сроком действия.

Как я могу справиться с этим?

Если код с истекшим сроком действия истек, пожалуйста, обратитесь ко мне.

Я googled о сроке действия с истекшим сроком действия, но я не смог его найти.

, пожалуйста, научите меня своему пути.

+0

Если сессия истекает пользователь будет логаут, и будут перенаправлены на страницу входа в систему, если они обновить или перейти к защищенной странице. – EJP

+0

@EJP, благодаря вашему доброму комментарию. Но как распознать сессию, истекшую ситуацию во времени? – lv0gun9

+1

можете ли вы разместить соответствующие части вашего web.xml? настраиваете ли вы защищенные страницы в веб-xml? – Subin

ответ

4

Когда ваша сессия закончится, объект сеанса вернет null из объекта запроса.

if(request.getSession(false)==null){ 
    //Session expired or never existed 
} else{ 
    //session is still good. 
} 

Это лучшая практика, чтобы оставить такое тестирование до фильтра, который может проверить каждый запрос, но вы могли бы сделать это внутри JSP или внутри сервлета. Ввод кода перенаправления внутри JSP имеет тенденцию усложнять его и отвлекает внимание от пользовательского интерфейса. Я бы рекомендовал использовать фильтр, если не тогда, в сервлет, который направляет запросы на ваш JSP (ваш контроллер). Если вы не используете контроллер ...

Версия JSP (не рекомендуется) - Внутри вашей JSP использовать следующие

<% 
     if(request.getSession(false)==null){ 
      //session has expired 
      response.sendRedirect("/ExpiredPage"); 
     } else{ 
      //Do what you normally would    
     } 
%> 

Servlet версии (Better) - Внутри сервлета, который вызывает ваш JSP с помощью следующей

public void doGet(HttpServletRequest request,HttpServletResponse){  
    if(request.getSession(false)==null){ 
     //session has expired 
     response.sendRedirect("/ExpiredPage"); 
    } else{ 
     //Do what you normally would 
    } 
} 

фильтр версии (Best Choice) - Внутри вашего фильтра, который вызывает ваш сервлет ча LLS ваш JSP с помощью следующей

public void doFilter(ServletRequest request,ServletResponse, FilterChain chain){  
    if((HttpServletRequest)request.getSession(false)==null){ 
     //session has expired 
     ((HttpServletResponse)response).sendRedirect("/ExpiredPage"); 
    } else{ 
     //Do what you normally would 
     chain.doFilter(request,response); 
    } 
} 
+0

приятное и доброе решение. : 3 тывм. – lv0gun9

0

Если вы используете сервлет, то вы будете бросать java.lang.IllegalStateException. Когда вы пытаетесь использовать свою сессию.
Если вы используете JSP, вы будете бросать исключение NullPointerException. Когда вы пытаетесь получить доступ к атрибуту сеанса, который был утрачен во время старого сеанса.

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