1.配置web.xml文件
<filter>
<filter-name>timoutFilter</filter-name>
<filter-class>com.chinalbs.base.filter.SessionTimeoutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>timoutFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
2.创建过滤器 SessionTimeoutFilter
package com.chinalbs.base.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SessionTimeoutFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) arg0;
HttpServletResponse httpResponse = (HttpServletResponse) arg1;
String loginUrl = httpRequest.getContextPath() + "/login.jsp";
String url = httpRequest.getRequestURI();
if (!url.contains("validate") && httpRequest.getSession(false) == null) {
String str = "<script language='javascript'>alert('会话过期,请重新登录');"
+ "window.top.location.href='"
+ loginUrl
+ "';</script>";
httpResponse.setContentType("text/html;charset=UTF-8");// 解决中文乱码
PrintWriter writer = httpResponse.getWriter();
writer.write(str);
writer.flush();
return;
}
chain.doFilter(httpRequest, httpResponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
3.对于一般请求以上两个步骤即可。但是对于ajax强求则需进一步处理,如:
$.ajax({
cache: false,
type: "POST",
url:'${pageContext.request.contextPath}/user/updatePassword.do',
data:{id:id,password:password},
async : false,
error : function(request) {
alert("访问后台失败!");
},
success:function(data){
if(data == true || data == "true"){
window.location.href = "${pageContext.request.contextPath}/user/queryListByParam.do";
}else if(data == false || data == "false"){
alert("重置密码失败!");
}else{
document.write(data);//当session过期时,data即为filter中返回的请求
}
}
});