springMVC 拦截器


  1. package com.ccsu.common.filter;  
  2.   
  3. import com.ccsu.common.constants.SessionConstants;  
  4. import com.ccsu.entity.userSystem.User;  
  5. import com.ccsu.util.userSystem.ProsReader;  
  6. import org.slf4j.Logger;  
  7. import org.slf4j.LoggerFactory;  
  8. import org.springframework.http.HttpStatus;  
  9. import javax.servlet.*;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12. import javax.servlet.http.HttpSession;  
  13. import java.io.IOException;  
  14.   
  15. /** 
  16.  * Created with IntelliJ IDEA. 
  17.  * User: Ambitor springMVC拦截器 判断session中用户是否过期 
  18.  * Date: 13-6-27 
  19.  * Time: 下午7:31 
  20.  * To change this template use File | Settings | File Templates. 
  21.  * 
  22.  * @author 罗涛 
  23.  */  
  24.   
  25. public class SystemFilter implements Filter {  
  26.   
  27.     Logger logger = LoggerFactory.getLogger(SystemFilter.class);  
  28.   
  29.   
  30.     @Override  
  31.     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {  
  32.         if (!(servletRequest instanceof HttpServletRequest) || !(servletResponse instanceof HttpServletResponse)) {  
  33.             throw new ServletException("OncePerRequestFilter just supports HTTP requests");  
  34.         }  
  35.         HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;  
  36.         HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;  
  37.         HttpSession session = httpRequest.getSession(true);  
  38.   
  39.         StringBuffer url = httpRequest.getRequestURL();  
  40.         String[] strs = ProsReader.getString("INDICATION_APP_NAME").split("\\|");  
  41.         if (strs != null && strs.length > 0) {  
  42.             for (String str : strs) {  
  43.                 if (url.indexOf(str) >= 0) {  
  44.                     filterChain.doFilter(servletRequest, servletResponse);  
  45.                     return;  
  46.                 }  
  47.             }  
  48.         }  
  49.         Object object = session.getAttribute(SessionConstants.SESSION_USER);  
  50.         User user = object == null ? null : (User) object;  
  51.         if (user == null) {  
  52.             boolean isAjaxRequest = isAjaxRequest(httpRequest);  
  53.             if (isAjaxRequest) {  
  54.                 httpResponse.setCharacterEncoding("UTF-8");  
  55.                 httpResponse.sendError(HttpStatus.UNAUTHORIZED.value(),  
  56.                         "您已经太长时间没有操作,请刷新页面");  
  57.             }  
  58.             httpResponse.sendRedirect("/page/login/user_login");  
  59.             return;  
  60.         }  
  61.         filterChain.doFilter(servletRequest, servletResponse);  
  62.         return;  
  63.     }  
  64.   
  65.     /** 
  66.      * 判断是否为Ajax请求 
  67.      * 
  68.      * @param request HttpServletRequest 
  69.      * @return 是true, 否false 
  70.      */  
  71.     public static boolean isAjaxRequest(HttpServletRequest request) {  
  72.         return request.getRequestURI().startsWith("/api");  
  73. //        String requestType = request.getHeader("X-Requested-With");  
  74. //        return requestType != null && requestType.equals("XMLHttpRequest");  
  75.     }  
  76.   
  77.     @Override  
  78.     public void init(FilterConfig filterConfig) throws ServletException {  
  79.             /*如果需要注入,请取消注释*/  
  80. //           ServletContext servletContext = filterConfig.getServletContext();  
  81. //            WebApplicationContext applicationContext = (WebApplicationContext) servletContext.  
  82. //                    getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);  
  83. //            if (null == topConstantsImpl) {  
  84. //                //从Spring AC 中加载app configuration对象  
  85. //                topConstantsImpl = applicationContext.getBean(TopConstantsImpl.class);  
  86. //        }  
  87.     }  
  88.   
  89.     @Override  
  90.     public void destroy() {  
  91.         //To change body of implemented methods use File | Settings | File Templates.  
  92.     }  
  93.   
  94.   
  95. }  

你可能感兴趣的:(spring,mvc)