zoukankan      html  css  js  c++  java
  • 过滤器的使用

    过滤器

       过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

          如图,浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤。过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在前的则位于链的前端。当请求通过了链中所有过滤器后就可以访问资源文件了,如果不能通过,则可能在中间某个过滤器中被处理掉。

         在doFilter()方法中,chain.doFilter()前的一般是对request执行的过滤操作,chain.doFilter后面的代码一般是对response执行的操作。过滤链代码的执行顺序如下:

         

         过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中还要进行相应的操作。

    下面是过滤器的简单应用:

    设置过滤器:

    import java.io.IOException;
    
    public class ServletFilter implements javax.servlet.Filter {
    
        private  String characterEncoding = null;
        public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain)
                throws javax.servlet.ServletException, IOException {
            //设置编码
            req.setCharacterEncoding(characterEncoding);
            String str = "text/html;charset="+characterEncoding;
            resp.setContentType(str);
            chain.doFilter(req, resp);
        }
    
        public void init(javax.servlet.FilterConfig config)
                throws javax.servlet.ServletException {
            characterEncoding = config.getInitParameter("characterEncoding");
        }
        public void destroy() {
        }
    }

    web.xml 配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <filter>
            <filter-name>ServletFilter</filter-name>
            <filter-class>ServletFilter</filter-class>
            <init-param>
                <param-name>characterEncoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>ServletFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>
    

    配置过滤器前:

    配置过滤器设置编码:

    百度网盘:链接: https://pan.baidu.com/s/1ZaM5xOsWZg7qFbBDnrFZJA 提取码: 6v64 

       

  • 相关阅读:
    Swift开发--Storyboard的使用教程
    HDU 2188-悼念512汶川大地震遇难同胞――选拔志愿者(巴什博奕)
    编译iOS使用的.a库文件
    springMVC3学习(十)--注解式控制器
    oracle RANK() dense_rank()
    sum(),max(),avg(),RATIO_TO_REPORT()--分组统计
    cume_dist(),允许并列名次、复制名次自动空缺,取并列后较大名次,结果如22355778……
    cume_dist(),名次分析——-最大排名/总个数
    rank(),允许并列名次、复制名次自动空缺,结果如12245558……
    ROW_NUMBER(),不允许并列名次、相同值名次不重复,结果如123456……
  • 原文地址:https://www.cnblogs.com/xjtsh/p/10614315.html
Copyright © 2011-2022 走看看