Когда ваша сессия закончится, объект сеанса вернет 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);
}
}
Если сессия истекает пользователь будет логаут, и будут перенаправлены на страницу входа в систему, если они обновить или перейти к защищенной странице. – EJP
@EJP, благодаря вашему доброму комментарию. Но как распознать сессию, истекшую ситуацию во времени? – lv0gun9
можете ли вы разместить соответствующие части вашего web.xml? настраиваете ли вы защищенные страницы в веб-xml? – Subin