您的位置:首页 > 其它

过滤器生命周期-17

2017-09-06 16:36 246 查看
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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: