zoukankan      html  css  js  c++  java
  • 过滤器

    Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

    创建一个过滤器,继承于Filter:,实现Filter的三个方法public class LoginFilter implements Filter {

        
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
            //初始化,当前的过滤器对象创建出来的时候,该方法会执行
            //一般在该方法中读web.xml中的参数
    
        }
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            //在这里请求进行过滤
            HttpServletRequest req = (HttpServletRequest) request;
            HttpSession session = req.getSession();
            //从session域中取出登录用户信息
            Object user = session.getAttribute("user");
            if (user != null){
                //对该请求放行
                chain.doFilter(request,response);
    
            }else {
                //用户没登录
                HttpServletResponse resp = (HttpServletResponse) response;
    
                //重定向回登录页面
                resp.sendRedirect("/log");
    
            }
        }
        @Override
        public void destroy() {
            //当前过滤器被销毁的时候被执行
            //一般用于释放资源
    
        }
    }

    创建完过滤器必须要在web.xml配置文件进行配置,才能使过滤器生效:

       <filter>
            <filter-name>LoginFilter</filter-name>
            <filter-class>com.lanou.demo.filter.LoginFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>LoginFilter</filter-name>
    <!--设置哪些请求地址会经过该过滤器--> <url-pattern>/category/*</url-pattern> </filter-mapping>

    <filter-class>中的名字是上面的过滤器名字;

    另外Spring框架中带有一个过滤器,:

    <filter>
            <filter-name>CharsetFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--是指过滤的参数类型,可不写-->
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
        </filter>
    
     <filter-mapping>
            <filter-name>CharsetFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    注意:<filter>标签必须写在servlet标签之前

  • 相关阅读:
    Uva 10719 Quotient Polynomial
    UVa 11044 Searching for Nessy
    Uva 10790 How Many Points of Intersection?
    Uva 550 Multiplying by Rotation
    Uva 10916 Factstone Benchmark
    Uva 10177 (2/3/4)D Sqr/Rects/Cubes/Boxes?
    Uva 591 Box of Bricks
    Uva 621 Secret Research
    Uva 10499 The Land of Justice
    Uva 10014 Simple calculations
  • 原文地址:https://www.cnblogs.com/zhouchangyang/p/10908011.html
Copyright © 2011-2022 走看看