过滤器生命周期-17

来源:互联网 发布:去男朋友的城市 知乎 编辑:程序博客网 时间:2024/06/03 05:07

1.web项目加载时,过滤器会实例化及调用init方法,且容器只会维护一个实例
2.当请求经过过滤器时,调用doFilter方法
3.当容器正常关闭或项目卸载时,调用destory方法

初始化参数的配置

@WebFilter(servletNames = { "s" }, initParams = { @WebInitParam(name = "n1", value = "v1") })

还有一种web.xml

     <filter>          <filter-name>filter1</filter-name>           <filter-class>com.tanlan.javaees1.Filter1</filter-class>           <init-param>           <param-name>n1</param-name>          <param-value>v1</param-value>       </init-param>       </filter>       <filter-mapping>             <filter-name>filter1</filter-name>            <url-pattern>/servlet1</url-pattern>         </filter-mapping>

初始化参数的读取

    @Override    public void init(FilterConfig config) throws ServletException {        System.out.println("init");        Enumeration<String> names = config.getInitParameterNames();        while(names.hasMoreElements()){            String name=names.nextElement();            System.out.println(name+"="+config.getInitParameter(name));        }    }

doFilter方法的实现:
获取http请求,做相关处理
根据处理请求结果决定是否使其访问下一个资源

    @Override    public void doFilter(ServletRequest req, ServletResponse res,            FilterChain chain) throws IOException, ServletException {        System.out.println("start doFilter");        req.setCharacterEncoding("UTF-8");        chain.doFilter(req, res);//允许请求访问下一个资源        System.out.println("end doFilte");    }
原创粉丝点击