zoukankan      html  css  js  c++  java
  • 关于使用session过滤器实现登录拦截

    首先在web.xml中配置,配置方法与字符拦截器大同小异,配置如下:

      

    <!-- 使用filter实现登录控制 -->
        <filter>
            <filter-name>SessionFilt</filter-name>
            <filter-class>com.ed.web.admin.action.LoginFilter</filter-class>
    
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>SessionFilt</filter-name> 
            <url-pattern>要拦截的页面</url-pattern>
        </filter-mapping>

       和普通过滤器配置没什么区别,就是多了两个初始化参数,两个参数的作用分别是:
            encoding----->用来指定一个具体的字符集
            forceEncoding------->Spring的早期版本这个参数作用很单一,当request中已经被指定了一个字符集的时候是否再将用 endcoding对应的字符集设置到request中去。举个例子来说明,假如说过滤器就像上面 那样被配置到web.xml了,当请求 被提交之后,过滤器会判断request.getCharacterEncoding()是否为null,如果是null那么就会进行 request.setCharacterEncoding("UTF-8")的操作,如果不是null那么过滤器什么也不会做。

          看下拦截后的具体逻辑:

           

    public class LoginFilter implements Filter {
        private String excludedPaths;
        private String [] excludedPathArray;
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
    
        }
        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            // TODO Auto-generated method stub
            HttpServletRequest request = (HttpServletRequest)arg0;
            HttpServletResponse response = (HttpServletResponse)arg1;
            HttpSession session = request.getSession();
            //需要放行的路径
            if( request.getRequestURI().indexOf("/admin/login")!= -1
                ||request.getRequestURI().indexOf("/pac/ky")!= -1
                    ||request.getRequestURI().indexOf("/pac/yh")!= -1
                    ||request.getRequestURI().indexOf("/pac/yn")!= -1
                    ||request.getRequestURI().indexOf("/pac/yn")!= -1){
                arg2.doFilter(arg0, arg1);
            }
            else{
                if(session.getAttribute("loginUser")==null   ){
                    response.sendRedirect(request.getContextPath()+"/timeout.jsp");
                }else {
                    arg2.doFilter(arg0, arg1);
                }
            }
        }
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub
        }
    }
  • 相关阅读:
    P2207 Photo
    P1022 计算器的改良
    P1003 铺地毯
    P3014 [USACO11FEB]牛线Cow Line && 康托展开
    P4180 【模板】严格次小生成树[BJWC2010]
    P2776 [SDOI2007]小组队列
    P2426 删数
    P1948 [USACO08JAN]电话线Telephone Lines
    P1978 集合
    P1564 膜拜
  • 原文地址:https://www.cnblogs.com/yuqingya/p/12196351.html
Copyright © 2011-2022 走看看