• JAVAEE filter总结


    1.  为什么需要filter?

    filter相当于客户端和服务器端之间的一扇门,就像保安一样。作用:比如说设置字符集和权限控制等等。

    2.  细节; 

          * . 只能对post请求起作用

          *  .可以使用多种匹配模式:

                  *.jsp (*.后面带后缀名)           /servlet/* (某个路径下的所有请求)     /* (匹配所有)

          *  注意:当客户端发出请求到服务器端才会被拦截(假如从servlet转发到另一个jsp页面,这个时候不会被拦截)

    3. java代码:

    package com.huxin.filter;
    
    import java.io.IOException;
    import javax.servlet.*;
    public class SetCharacterEncodingFilter implements Filter {
            private String encoding ="";
            public void destroy() {}
            public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {
    	        servletRequest.setCharacterEncoding(encoding);
    	        filterChain.doFilter(servletRequest, servletResponse);
            }
            public void init(FilterConfig filterConfig) throws ServletException {
              this.encoding =  filterConfig.getInitParameter("encoding");
            }
    }


     

       <filter>
              <filter-name>SetCharacterEncodingFilter</filter-name>
              <filter-class>com.huxin.filter.SetCharacterEncodingFilter</filter-class>
            <init-param>
               <param-name>encoding</param-name>
               <param-value>utf-8</param-value>
            </init-param>
       </filter>
       <filter-mapping>
             <filter-name>SetCharacterEncodingFilter </filter-name>
             <url-pattern>/*</url-pattern>
       </filter-mapping>


    关于filter的生命周期问题:

    当tomcat容器启动的时候,会加载这个filter,并且调用init()方法,给encoding赋初值。当生命周期结束,就调用destroy()的方法。

     原理猜想:

      应该也是一个递归实现的,类似于struts2的拦截器。

  • 相关阅读:
    (Beta)Let's-Beta阶段展示博客
    (Beta)Let's-M2后分析报告
    (Beta)Let's-版本测试报告
    (Beta)Let's-版本发布说明
    团队作业Week14
    Daily Scrum 12.20
    Daily Scrum 12.19
    Daily Scrum 12.18
    Daily Scrum 12.17
    最后一次作业
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3177833.html
Copyright © 2020-2023  润新知