JAVA WEB filter

来源:互联网 发布:s7-300plc编程实例 编辑:程序博客网 时间:2024/04/29 19:16

Filter可认为是servlet的一种“加强版”,它是java下的一种过滤器 ,能实现对java web程序 客户端和服务器端消息的过滤,也就是在服务器段接受request之前,可以预先对request进行处理,或在客户端接受response之前,对response进行处理。

Filter也可对用户请求生成响应,但实际上很少会使用filter向用户请求生成响应。

使用filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给servlet进行处理并生成响应,最后filter再对服务器响应进行后处理。

Filter的作用:

1、在httpServletRequest到达servlet之前,拦截客户的httpServletRequest。
2、根据需要检查httpServletRequest,也可以修改HttpServletRequest头和数据。

3、httpServletResponse到达客户端之前,拦截httpServletResponse。
4、根据需要检查httpServletResponse,也可以修改httpServletResponse头和数据

创建Filter类

void init(FilterConfig):用于完成Filter的初始化
void destroy();用户FIlter销毁钱,完成某些资源的回收
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain);

实现过滤功能,该方法就是对每个请求以及响应增加的额外处理

配置Filter拦截URL模式
区别在于,servlet通常只配置一个URL,而Filter可以同时拦截多个请求的URL。因此,在配置Filter的URL模式时通常会使用模式字符串,使得Filter可以拦截多个请求。与配置Servlet相似的是,
配置Filter同样有两种方式:

1、在Filter类中通过Annotation进行配置

2、在web.xml文件中通过配置文件进行配置

 <filter>

<!--Filter的名字,相当于指定@WebFilter的filterName的属性-->
        <filter-name>LogFilter</filter-name>

<!--Filter的实现类-->
        <filter-class>com.xx.LogFilter</filter-class>

 </filter>

<!--定义Filter拦截URL的地址-->
<filter-mapping>

<!--Filter的名字-->
        <filter-name>LogFilter</filter-name>

<!--FIlter负责拦截的URL,相当于指定@WebFilter的urlPatterns属性-->
        <url-pattern>/*</url-pattern>

</filter-mapping>

0 0
原创粉丝点击