zoukankan      html  css  js  c++  java
  • Servlet Filter 过滤器 对指定页面不拦截

    package niit.dxs.controller;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    public class LoginFilter implements Filter {
        private String excludedPage;
        private String[] excludedPages;
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            excludedPage = filterConfig.getInitParameter("excludedPages");
            if (excludedPage != null && excludedPage.length() > 0){
                excludedPages = excludedPage.split(",");
            }
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            // 获取 resquest、response、session
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            HttpSession session = request.getSession();
    
            // 定义表示变量 并验证用户请求URL 是否包含不过滤路径
            boolean flag = false;
            for (String page:excludedPages) {
                if (request.getServletPath().equals(page)){
                    flag = true;
                }
            }
    
            // 验证用户登录
            if (flag){
                filterChain.doFilter(request,response);
            }{
                String userName= (String) session.getAttribute("userKey");
                System.out.println("userid——————————》"+userName);
                if (userName != null){
                    filterChain.doFilter(request,response);
                }else {
                    request.getRequestDispatcher("index.jsp").forward(request,response);
                }
            }
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

    web.xml

    <!--  过滤器   -->
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>niit.dxs.controller.LoginFilter</filter-class>
        <init-param>
            <param-name>excludedPages</param-name>
            <param-value>/index.jsp,/register.html,/RegisterServlet,/LoginServlet</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 相关阅读:
    C 语言 静态库和动态库的创建和应用
    C++ 中英文术语对照
    下午
    [转]内核 do_fork 函数源代码浅析
    关于C#反射机制,自己写的
    获取字符串中数字
    关于C#反射机制,来源于网络
    关于 Nhinernate 的one to one(转载)
    鼠标坐标的记录
    关于C#中hibernate.cfg.xml动态加载问题
  • 原文地址:https://www.cnblogs.com/jtlgb/p/8514305.html
Copyright © 2011-2022 走看看