Servlet第八章知识点总结——过滤器过滤器链
知识点预览
过滤器概述
Web应用上的过滤器
HelloWorldFilter–编码、编译
过滤器API
使用请求和响应包装器
其他
一.过滤器概述
a) 一个中间组件,用于拦截源数据和目的数据之间的消息
b) 过滤二者之间传递的数据
二.Web应用上的过滤器
a) 驻留在Web服务器上的Web组件
b) 过滤从客户端传递到服务器端的请求和响应(数据的流向不会受到影响、内容会)AOP概念
i. 以更改请求的内容,或者重新设置请求头,然后再将请求传递给目标资源
ii. 在Web应用程序中部署过滤器,对客户端和目标资源来说都是透明的,他们并不需要知道过滤器的存在
c) Web应用上部署多个过滤器
i. 过滤器可以组成一个过滤器链。链中的每个过滤器负责特定的操作和任务,客户端的请求和响应在这些过滤器之间传递(整个Struts都是拦截器实现的)
d) 用途:
i. 认证过滤:对用户请求进行统一的认证。
ii. 登录和审核过滤:对用户的访问请求进行记录和审核。权限认证
iii. 图像转换过滤:转换图像格式。
iv. 数据压缩过滤:对用户发生的数据进行压缩,从而减少传输量。
v. 加密过滤:对请求和响应进行加密解密处理。
vi. 令牌过滤(防止表单重复提交)注册时
vii. 资源访问触发事件过滤
viii. XSLT过滤
ix. MIME-Type过滤
三.HelloWorldFilter–编码、编译:
i. web_0701_first_filter\src\com\test\filter\FirstFilter.java
ii. Web.xml
<!—指定过滤器名和过滤器类-->
<filter>
<filter-name>filter1</filter-name>
<filter-class>com.test.filter.FirstFilter</filter-class>
</filter>
<!-- 将过滤器与URL模式关联,过滤什么请求-->
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
四.过滤器API
a) 由容器实现的接口
i. javax.servlet.Filter
ii. javax.servlet.FilterChain
iii. javax.servlet.FilterConfig
b) 四个包装器类(在请求送到过滤器链的下一个组件之前更改请求的内容或者改变从前一个组件接收的响应)
i. javax.servlet.ServletRequestWrapper
ii. javax.servlet.ServletResponseWrapper
iii. javax.servlet.http.HttpServletRequestWrapper
iv. javax.servlet.http.HttpServletResponseWrapper
c) Filter接口:
d) FilterConfig接口
i. 为过滤器提供初始化参数
ii. 由Servlet容器实现
e) FilterChain接口:
i. 由容器实现
ii. 将请求传递到过滤器链的下一个组件
五.使用请求和响应包装器
a) web_0704_wrapper(实现敏感字符过滤)
六.其他
过滤器——Web容器调用
Servlet:第一次请求new对象
过滤器:启动时new对象
过滤器:统一字符编码