Filter的开发和使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Filter的开发和使用相关的知识,希望对你有一定的参考价值。
Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HTTPServletResponse进行后处理。与Servlet的区别在于:Filter不能直接向用户生成响应。其完成流程为:Filter对用户请求进行预处理,然后将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。Filter作用如下:
1、在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest;
2、根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据;
3、在HttpServletResponse到达客户端之前,拦截HttpServletResponse;
4、根据需要检查的HttpServletResponse,也可以修改HttpServletResponse头和数据;
创建Filter只需两个步骤:
1、创建Filter类;
2、在web.xml中配置Filter;
创建Filter必须实现javax.servlet.Filter接口,该接口中定义了3个方法:
void init(FilterConfig config):用于完成Filter初始化。
void destroy():用于Filter销毁前,完成某些资源回收。
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):实现了核心的过滤功能,对请求增加额外处理。
在doFilter()中,通过chain.doFilter()方法来划分对请求的预处理和对服务器响应的后处理。位于chain.doFilter()之前的代码是预处理,位于chain.doFilter()方法之后的是后处理。
Filter需配置两部分内容:
配置Filter名:<filter/>;
配置Filter拦截URL模式:<filter-mapping/>;
配置实例如下:
<!--定义Filter--> <filter> <!--Filter名字--> <filter-name>myFilter</filter-name> <!--Filter的实现类--> <filter-class>com.MyFilter</filter-class> <!--使用init-param配置参数--> <init-param> <!--定义参数名字--> <param-name>encoding</param-name> <!--定义参数值--> <param-value>GBK</param-value> </init-param> </filter> <!--定义Filter拦截的URL地址--> <filter-mapping> <!--Filter名字--> <filter-name>myFilter</filter-name> <!--Filter负责拦截的URL--> <url-pattern>/*</url-pattern> </filter-mapping>
以上是关于Filter的开发和使用的主要内容,如果未能解决你的问题,请参考以下文章