我有一个关于Tomcat会话的问题。Tomcat会话过期处理
当Tomcat的默认会话过期时间是30分钟我知道。
我想向用户显示会话过期的消息页面。
我该如何处理?
如果会话过期错误代码存在,请指导我。
我搜索了会话过期的错误代码,但是我找不到它。
请教我你的方式。
我有一个关于Tomcat会话的问题。Tomcat会话过期处理
当Tomcat的默认会话过期时间是30分钟我知道。
我想向用户显示会话过期的消息页面。
我该如何处理?
如果会话过期错误代码存在,请指导我。
我搜索了会话过期的错误代码,但是我找不到它。
请教我你的方式。
当会话过期时,会话对象将从请求对象返回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的Ca 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);
}
}
不错,善良的解决方案。 :3 tyvm。 – lv0gun9
如果您使用的是Servlet,那么您将抛出java.lang.IllegalStateException。当你尝试使用你的会话。
如果您使用的是JSP,那么您将抛出NullPointerException。当您尝试访问旧会话丢失的会话属性时。
如果会话过期,用户将被注销,如果他们刷新或导航到一个受保护的页面将被带到登录页面。 – EJP
@EJP,感谢您的评价。 但是如何及时识别会话过期的情况? – lv0gun9
你可以发布你的web.xml的相关部分吗?你是否在web xml中配置了你的受保护页面? – Subin