java 拦截器

来源:互联网 发布:javascript逻辑 编辑:程序博客网 时间:2024/06/03 20:24

1、新建一个filter ,名称为LoginFilter实现Filter类

修改doFilter()方法为:

public void doFilter(ServletRequest req, ServletResponse res,
          FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
        request.setCharacterEncoding("utf-8");
HttpServletResponse response = (HttpServletResponse) res;
response.setCharacterEncoding("utf-8");

//得到request和response,将request和response的编码设为utf-8
HttpSession session = request.getSession();//得到session
User user = (User) session.getAttribute("user");//从session中得到user 如果用户已登录则user不为空,否则为空
String url = request.getRequestURI();//得到地址栏
        if (user == null && url.indexOf("doLogin.do") < 0//判断用户是否已登录
           && url.indexOf("login.do") < 0
           && !url.endsWith("index.jsp") // 对URL地址为此结尾的文件不过滤
           && !url.endsWith(".js")
           && url.indexOf(".css") < 0
           && url.indexOf(".png") < 0
           && url.indexOf(".gif") < 0
           && url.indexOf("/servlet/") < 0) {
response.sendRedirect(request.getContextPath() + "/index.jsp");
}else {
chain.doFilter(request, response);
}
    }

在web.xml中加入拦截器的配置:

 <!-- 过滤器配置 -->
  <filter>
  <filter-name>LoginFilter</filter-name>
  <filter-class>com.test.oa.web.filter.LoginFilter</filter-class>//拦截器方法所在的位置
  </filter>
  
  <filter-mapping>
  <filter-name>LoginFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>

原创粉丝点击