【JavaWeb】(7)过滤器
来源:互联网 发布:音频分析软件 编辑:程序博客网 时间:2024/06/08 11:48
1. 介绍
定义:过滤器是一个服务端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。
生命周期:
其中实例化是在Web项目启动的时候执行,只会执行一次;初始化也只会执行一次;过滤会执行多次,每一次接受请求都会执行一次;销毁是在Web容器关闭的时候执行。
2. 实现过滤器
过滤器实现了javax.servlet.Filter接口,需要我们实现3个方法:
init():这是过滤器的初始化方法,Web容器创建过滤器实例后将调用这个方法。这个方法中可以读取web.xml文件中过滤器的参数。
doFilter():这个方法完成实际的过滤操作。这个地方是过滤器的核心方法。当用户请求访问与过滤器关联的URL时,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求转发到其它资源。
destroy():Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。(大多数情况用不到)
web.xml配置:
<filter>标签只能配置一个,而<filter-mapping>标签可以配置多个。
一个简单的Web.xml配置:
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> <filter> <filter-name>FirstFilter</filter-name> <filter-class>com.thr.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/index.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping></web-app>过滤器可以改变用户的请求的Web资源,也就是可以改变用户请求的路径。
过滤器不能直接返回数据,不能直接处理用户请求。
3. 过滤器链
4. 过滤器分类
(1). REQUEST:用户直接访问页面时,Web容器将会调用过滤器,如果没有配置的话,默认的是REQUEST
(2). FORWARD:目标资源是通过RequestDIspatcher的forward访问时,该过滤器将被调用。
(3). INCLUDE:目标资源是通过RequestDIspatcher的include访问时,该过滤器将被调用。
(4). ERROR:目标资源是通过声明式异常处理机制调用时,过滤器将被调用。
使用重定向并且REQUEST时,可能会产生死循环。
使用请求转发并且FORWARD时,可能会产生死循环。
在Servlet3.0中新增了ASYNC:支持异步处理。
@WebFilter:用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。
使用@WebFilter,可以不必在web.xml中配置即可完成对过滤器的配置。
@WebFilter的常用属性:
可以在web.xml中配置FilterConfig的初始化参数,在过滤器里可以通过getInitParameter获取初始化参数。
5. 应用场景
(1). 对用户请求进行统一认证
(2). 编码转换
(3). 对用户发送的数据进行过滤替换
(4). 转换图像格式
(5). 对响应的内容进行压缩
一个解决中文乱码的思路:在过滤器中进行request.setCharacterEncoding("utf-8")设置。
- 【JavaWeb】(7)过滤器
- JavaWeb 过滤器
- javaweb - 过滤器
- javaweb过滤器
- JavaWeb 过滤器
- JavaWeb-过滤器
- javaweb 过滤器
- javaweb过滤器
- JavaWeb过滤器
- javaweb过滤器
- JavaWeb过滤器
- JavaWeb过滤器
- JavaWeb过滤器
- javaWeb过滤器
- JavaWeb过滤器
- JavaWeb过滤器
- Javaweb过滤器
- JavaWeb过滤器
- Scheme 4 Javaer-4.Pair、car和cdr
- Android 通过反射随手可得的Application对象
- ora-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样
- 结构体与类的区别
- ASP.NET 中Post与Get提交方法的不同
- 【JavaWeb】(7)过滤器
- 关于通过UINavigationController push 过去到一个view controller而这个viewvontroller的viewwillappear不执行的问题
- iOS 金额字段加千位分隔符的方法以及银行卡卡号4位一空格的方法
- android自定义style
- 杭电 hdu 1083 Courses (二分匹配 )
- android 中一个工程引用另一个工程
- ConfigurationManager类的config文件读写
- 替换class文件时,连同其内部类class文件一同替换
- iOS开发系列--通知与消息机制