• Filter简单介绍


    一、简单介绍
            Filter也称为过滤器,WEB开发者通过Filter技术。对webserver管理的全部web资源:比如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截。从而实现一些特殊的功能。比如实现权限訪问控制、过滤敏感词汇、压缩响应信息,配置日志等一些功能

        

            Servlet API中提供了一个Filter接口,开发web应用时。假设编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发者能够实现用户在訪问某个目标资源之前,对訪问的请求和响应进行拦截。

    简单说。就是能够实现web容器对某资源的訪问前截获进行相关的处理,还能够在某资源向web容器返回响应前进行截获进行处理。


    二、使用流程
        1、新建一个类,实现Filter接口
        2、实现doFilter()方法
        3、在web.xml中进行配置
    三、实践应用(JSP訪问servlet时,统一设置字符集)
        1)新建一个类,实现Filter接口。并实现doFilter()方法
    /**
     * 统一设置字符集
     */</span>
    public class CharsetEncodingFilter implements Filter {
        private String encoding;
        
        @Override
        public void destroy() {
        }
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            //System.out.println("CharsetEncodingFilter_____begin———————");
            // 设置字符集</span>
            request.setCharacterEncoding(encoding);
            
            //继续运行</span>
            chain.doFilter(request, response);
            //System.out.println("CharsetEncodingFilter______end——————");
        }
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
            encoding=filterConfig.getInitParameter("encoding");
        }
    }  

    2)配置xml文件
        <filter>
             <!-- 配置实现Filter的类 --></span>
    
             <filter-name>CharsetEncodingFilter</filter-name>
             <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
               <!-- 设置初始化參数 --> </span>          
             <init-param>
                 <param-name>encoding</param-name>
                 <param-value>GBK</param-value>
             </init-param>
         </filter>
         <filter-mapping>
              <!-- 设置要拦截的url --></span>           
             <filter-name>CharsetEncodingFilter</filter-name>
             <url-pattern>*.jsp</url-pattern>
         </filter-mapping>
     
    四、总结
        综上:filter事实上就是一个拦截器,比方说在上述程序中我设置拦截的对象是*.jsp,当我用jsp网页进行提交时。通过filter。我能够将其进行拦截,先去运行我要运行的代码,运行完了之后。在继续返回到拦截位置继续运行你自己要运行的程序。

    假如用html网页进行提交时则不会触发此拦截器。

        所以说使用Filter是很方便的,最简单的一点能够实现代码的复用。除此之外还有好多其它的优点。在此就不一一介绍了。

  • 相关阅读:
    django with mysql (part-4)
    django with mysql (part-3)
    django with mysql (part-2)
    [LeetCode] 22. 括号生成(回溯/DP)
    [算法]求满足要求的进制(辗转相除(欧几里得算法),求最大公约数gcd)
    [算法]体积不小于V的情况下的最小价值(0-1背包)
    [LeetCode]96. 不同的二叉搜索树(DP,卡特兰数)
    [LeetCode]98. 验证二叉搜索树
    [LeetCode]21. 合并两个有序链表(递归)
    [LeetCode]538. 把二叉搜索树转换为累加树
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5173432.html
Copyright © 2020-2023  润新知