我对Tomcat中的会话有疑问。
我知道Tomcat的默认会话过期时间为30分钟。
我想向用户显示会话过期消息页面。
我该如何处理?
如果存在会话过期错误代码,请指导我。
我用Google搜索了有关会话过期的错误代码,但找不到它。
请教我你的方式。
最佳答案
当您的会话过期时,会话对象将从请求对象返回null。
if(request.getSession(false)==null){
//Session expired or never existed
} else{
//session is still good.
}
更好的做法是将这种测试留给可以检查每个请求的过滤器,但您可以在JSP或servlet内进行。将重定向代码放在JSP中会使其变得更加复杂,并使您的注意力从UI移开。我建议使用过滤器,如果没有,那么建议在将请求路由到您的JSP(您的控制器)的servlet中使用过滤器。如果您不使用控制器...
JSP版本(不推荐)-在JSP内部使用以下命令
<%
if(request.getSession(false)==null){
//session has expired
response.sendRedirect("/ExpiredPage");
} else{
//Do what you normally would
}
%>
Servlet版本(更好)-在调用JSP的Servlet中,使用以下代码
public void doGet(HttpServletRequest request,HttpServletResponse){
if(request.getSession(false)==null){
//session has expired
response.sendRedirect("/ExpiredPage");
} else{
//Do what you normally would
}
}
筛选器版本(最佳选择)-在调用Servlet的筛选器中,调用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);
}
}