j2EE过滤器-filter

Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截。
 
Filter用处:
在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。
根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据
在HttpServletResponse到达客户端之前,拦截HttpServletResponse
根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据
 
创建Filter需要实现Javax.servlet.Filter接口,该接口定义了如下三个方法:
(1)void init(FilterConfig config):初始化
(2)void destroy():可以做资源回收工作
(3)void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):实现过滤功能,可以调用chain.doFilter()方法,执行该方法之前,是对用户请求进行预处理,执行该方法之后,是对服务器响应进行后处理。
 
配置Filter的两种方式:
(1)注解
属性
类型
说明
filterName
String
指定过滤器的name属性,等价于<filter-name>
value
String[]
该属性等价于urlPatterns属性,但是两者不应该同时使用
urlPatterns
String[]
指定一组过滤器的URL匹配模式。等价于<url-pattern>标签
servletNames
String[]
可指定多个Servlet名,使Filter仅对这几个Servlet执行,取值是@WebServlet中的name属性的取值,或者是web.xml中<servlet-name>的取值
dispatcherTypes
DispatcherType
指定该Filter仅对那种模式的请求进行过滤。具体取值包括:ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。默认全部过滤。
initParams
WebInitParam[]
指定一组过滤器初始化参数,等价于<init-param>标签
asyncSupported
boolean
声明过滤器是否支持异步操作模式。等价于<async-supported>标签
description
String
该过滤器的描述信息。等价于<description>标签
displayName
String
该过滤器的显示名,通常配合工具使用,等价于<display-name>标签
(2)web.xml配置
<filter>
    <filter-name>filterName</filter-name>
    <filter-class>filterClass</filter-class>
</filter>
<filter-mapping>
    <filter-name>filterName</filter-name>
    <url-pattern>/*</url-pattern>指定Filter负责拦截的URL,指定url-pattern为/*表示拦截所有用户请求。
</filter-mapping>
posted @ 2016-04-20 15:42  门那粒沙  阅读(1796)  评论(0)    收藏  举报