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>
  • 相关阅读:
    前端3 浮动布局,固定定位,绝对定位,相对定位
    前端2 字体|文本属性样式, 高级选择器
    前端1.概念
    前端,基础选择器,嵌套关系.display属性,盒模型
    数据库之索引
    数据库之进阶(视图,事务,存储过程)
    数据库,多表数据
    数据库之表的使用
    数据的演化(数据仓库的发展史)
    HDFS退出安全模式
  • 原文地址:https://www.cnblogs.com/jtlgb/p/8514305.html
Copyright © 2011-2022 走看看