session过期(springMVC)

来源:互联网 发布:没有网站外链好优化么 编辑:程序博客网 时间:2024/05/16 10:46

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{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic 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);}@Overridepublic 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中返回的请求}}});