u 过滤器概念
过滤器是一个中间组件,用于拦截源数据和目的数据之间的消息
过滤二者之间传递的数据
u 过滤器实现步骤:
1、书写过滤器类
过滤器类都必须实现javax.servlet.Filter接口
public classHelloWorldFilter implements Filter {
private FilterConfig filterConfig;
publicvoid init(FilterConfig filterConfig) {//初始化方法
this.filterConfig = filterConfig;
}
publicvoid doFilter(
ServletRequest request, ServletResponseresponse,//请求和响应均不是基于Http协议的
FilterChain filterChain //将请求继续向后面的过滤器或目标资源发送
) throws ServletException, IOException {//业务方法,书写过滤内容
PrintWriter pw = response.getWriter();
……
filterChain.doFilter(request,response);
}
publicvoid destroy() {//销毁方法
}
}
在调用filterChain.doFilter方法后,将请求继续向目标资源发送。这时,也不能再做重定向和内部转发,否则抛出异常
2、完成过滤器在容器中的注册
<filter>
<filter-name>HelloWorldFilter</filter-name>
<filter-class>com.lovobook.HelloWorldFilter</filter-class>
</filter>
<!-- 将过滤器与URL模式关联,表示对什么资源进行过滤-->
<filter-mapping>
<filter-name>HelloWorldFilter</filter-name>
<url-pattern>/filter/*</url-pattern>//对请求URL对应的资源过滤
<servlet-name>testServlet</servlet-name>//对servlet过滤
</filter-mapping>
在Servlet3标准中,可以使用@webFilter(urlpattern="/test")注册
u 过滤器类型
<filter-mapping>
<filter-name>ValidatorFilter</filter-name>
<url-pattern>/filter/*</url-pattern>
<dispatcher></dispatcher>——如果为REQUEST表示以请求URL过滤(默认),如果为FORWARD则对内部转发过滤
</filter-mapping>
u 过滤器链
用多个过滤器处理在同一个请求
l 使用多个<filter-mapping>元素配置过滤器链
l 首先调用匹配请求URI的过滤器 <url-pattern>
l 再查找用Servlet名匹配请求URI的所有过滤器<servlet-name>
l 过滤器的执行顺序按照它们在部署描述文件中出现的顺序排序
本文详细介绍了Java Web应用中的过滤器概念及其实现步骤。包括如何编写过滤器类以实现数据拦截与处理,并通过示例代码展示了过滤器的初始化、业务逻辑及销毁过程。此外,还介绍了过滤器在容器中的注册方法以及如何配置过滤器链。
647

被折叠的 条评论
为什么被折叠?



