第一步:自定义拦截器
package com.ryx.mom.web.filter;
import java.io.IOException;
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;
import javax.servlet.http.HttpSession;
public class Ajaxfilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();
String uri = request.getRequestURI();
if(session == null||session.getAttribute("userInfo")==null){
System.out.println("==session="+session.toString());
System.out.println("==session="+session.getAttribute("userInfo"));
System.out.println("----"+uri);
System.out.println("==uri=="+uri.contains("login/login.jsp"));
//||uri.contains("desktop/index.jsp")
if(!uri.contains("login/login.jsp")){
System.out.println("--1--");
//判断ajax请求
if(request.getHeader("X-Requested-With")!=null&&request.getHeader("X-Requested-With").
equalsIgnoreCase("XMLHttpRequest")){
System.out.println("==1=1="+request.getHeader("X-Requested-With"));
response.addHeader("sesstionstatus", "timeout");
}else{
System.out.println("-1-2-");
response.sendRedirect(request.getContextPath()+"/mom/sysadmin/login/login.jsp");
}
}
System.out.println("-1-3---");
}
chain.doFilter(request, response) ;
}
public void destroy() {
// TODO Auto-generated method stub
}
}
import java.io.IOException;
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;
import javax.servlet.http.HttpSession;
public class Ajaxfilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();
String uri = request.getRequestURI();
if(session == null||session.getAttribute("userInfo")==null){
System.out.println("==session="+session.toString());
System.out.println("==session="+session.getAttribute("userInfo"));
System.out.println("----"+uri);
System.out.println("==uri=="+uri.contains("login/login.jsp"));
//||uri.contains("desktop/index.jsp")
if(!uri.contains("login/login.jsp")){
System.out.println("--1--");
//判断ajax请求
if(request.getHeader("X-Requested-With")!=null&&request.getHeader("X-Requested-With").
equalsIgnoreCase("XMLHttpRequest")){
System.out.println("==1=1="+request.getHeader("X-Requested-With"));
response.addHeader("sesstionstatus", "timeout");
}else{
System.out.println("-1-2-");
response.sendRedirect(request.getContextPath()+"/mom/sysadmin/login/login.jsp");
}
}
System.out.println("-1-3---");
}
chain.doFilter(request, response) ;
}
public void destroy() {
// TODO Auto-generated method stub
}
}
第二步 在web.xml配置拦截器
<filter>
<filter-name>Ajaxfilter</filter-name>
<filter-class>com.ryx.mom.web.filter.Ajaxfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Ajaxfilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>Ajaxfilter</filter-name>
<filter-class>com.ryx.mom.web.filter.Ajaxfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Ajaxfilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter>
第三步 重写requestcomplete方法
Ext.Ajax.on('requestcomplete',checkUserSessionStatus,this);
function checkUserSessionStatus(conn,response,options){
var str = response.getResponseHeader("sesstionstatus");
if(str=='timeout'){
Ext.Msg.alert("提示","链接已超时,请重新登录!",function(btn,text){
if(btn=='yes'){
var url = "http://localhost:8080/MOM-WEB/mom/sysadmin/login/login.jsp";
window.location.href = url;
}
});
}
};
function checkUserSessionStatus(conn,response,options){
var str = response.getResponseHeader("sesstionstatus");
if(str=='timeout'){
Ext.Msg.alert("提示","链接已超时,请重新登录!",function(btn,text){
if(btn=='yes'){
var url = "http://localhost:8080/MOM-WEB/mom/sysadmin/login/login.jsp";
window.location.href = url;
}
});
}
};