Spring MVC过滤器 登陆过滤

来源:互联网 发布:php项目文档 编辑:程序博客网 时间:2024/05/17 02:12

代码:

package com.uniquedu.filter;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;/** * 登录过滤 *  */public class UserSessionFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {// 不拦截的urlString[] notFilter = new String[] {"/index.jsp","selectExiteUser"};// 请求的urlString url = request.getRequestURI();if(url.indexOf("UniqueduHome") != -1){boolean doFilter = chek(notFilter,url);if(doFilter){Object obj = request.getSession().getAttribute("userSession");if(null==obj){// 如果session中不存在登录者实体,则弹出框提示重新登录PrintWriter out = response.getWriter();String loginPage = request.getContextPath()+"/index.jsp";StringBuilder builder = new StringBuilder();builder.append("<script type=\"text/javascript\">");builder.append("window.top.location.href='");builder.append(loginPage);builder.append("';");builder.append("</script>");out.print(builder.toString());}else {filterChain.doFilter(request, response);}}else{filterChain.doFilter(request, response);}}else{filterChain.doFilter(request, response);}}/** * @param notFilter 不拦截的url * @param url :请求的url * @return false:不拦截 *    true:拦截 */public boolean chek(String[] notFilter,String url){//url以css和js结尾的不进行拦截if(url.endsWith(".css") || url.endsWith(".js")){return false;}//含有notFilter中的任何一个则不进行拦截for (String s : notFilter) {if (url.indexOf(s) != -1) {return false;}}return true;}}

web.xml中配置:

 <!-- start 添加拦截器 -->  <filter>    <filter-name>UserSessionFilter</filter-name>    <filter-class>com.uniquedu.filter.UserSessionFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>UserSessionFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <!--  end 添加拦截器 -->

参考:http://blog.csdn.net/geloin/article/details/7445441

1 0