Java-Servlet之过滤器Filter
来源:互联网 发布:udp源端口号 编辑:程序博客网 时间:2024/05/16 18:31
一、过滤器
1.1定义
过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息进行过滤。
1.2工作原理
1、项目启动时,从Web容器中加载过滤器;
2、过滤器存在于用户请求和Web资源之间;
3、用户请求和Web响应之间的收发都经由过滤器按照过滤规则进行过滤筛选。
1.3过滤器的生命周期
实例化(web.xml加载)→初始化(init方法)→过滤(doFilter方法)→销毁(destroy方法)
1、初始化:当容器第一次加载该过滤器时,init() 方法将被调用。该类在这个方法中包含了一个指向 Filter Config 对象的引用。我们的过滤器实际上并不需要这样做,因为其中没有使用初始化信息,这里只是出于演示的目的。
2、过滤:过滤器的大多数时间都消耗在这里。doFilter方法被容器调用,同时传入分别指向这个请求/响应链中的 Servlet Request、Servlet Response 和 Filter Chain 对象的引用。然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源(通过调用 Filter Chain 对象引用上的 doFilter方法),之后在处理控制权返回该过滤器时处理响应。
3、销毁:容器紧跟在垃圾收集之前调用 destroy()方法,以便能够执行任何必需的清理代码。
过滤器链:服务器会按照web.xml中过滤器定义的先后顺序组装成一条链
1.4过滤器在web.xml中的基本配置
过滤器在web.xml中的的配置:
<filter> <filter-name>过滤器名称</filter-name> <filter-class>过滤器完整类名</filter-class> <init-param> <description>描述信息,可以省略</description> <param-name>参数名称</param-name> <param-value>参数值</param-value> </init-param></filter><filter-mapping> <filter-name>过滤器名称</filter-name> <url-pattern>URL</url-pattern> <dispatcher>[REQUEST|INCLUDE|FORWARD|ERROR]</dispatcher></filter-mapping>
1.5过滤器的分类
二、过滤器的基本使用
2.1 过滤器类的设计
实现Filter接口,重写init、doFilter、destroy方法
public class MyFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException{} /** *使浏览器不缓存页面的过滤器 */ public void doFilter(ServlerRequest request,ServletResponse response,FilterChain filterChian) throws IOException,ServletException{ ((HttpServletResponse) response).setHeader("Cache-Control","no-cache"); ((HttpServletResponse) response).setHeader("Pragma","no-cache"); ((HttpServletResponse) response).setDateHeader ("Expires", -1); filterChain.doFilter(request, response);//将处理任务传递给过滤器链中的下一个资源 } public void destroy(){}}
2.2 过滤器在web.xml中的注册
1、REQUEST、FORWARD、INCLUDE等类型过滤器的注册
<!-- 过滤器配置 --><filter> <filter-name>myFilter</filter-name> <filter-class>util.filter.MyFilter</filter-class></filter><filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/main.jsp</url-pattern> <dispatcher>[REQUEST|FORWARD|INCLUDE]</dispatcher></filter-mapping>
2、ERROR类型的过滤器注册
<!-- 配置错误页面,当出现404错误则跳转至/error.jsp页面 --><error-page> <error-code>404</error-code> <location>/error.jsp</location><error-page><!-- 过滤器配置 --><filter> <filter-name>errorFilter</filter-name> <filter-class>util.filter.ErrorFilter</filter-class></filter><filter-mapping> <filter-name>errorFilter</filter-name> <url-pattern>/error.jsp</url-pattern> <dispatcher>ERROR</dispatcher></filter-mapping>
三、Servlet3.0中过滤器的使用
加上 @WebFilter 注解即可,无需在web.xml中注册
@WebFilter(servletNames={"SimpleServlet"},filterName="SimpleFilter")public class MyFirstFilter implements Filter{}
- Java-Servlet之过滤器Filter
- Filter-servlet Java servlet 之过滤器Filter详解
- Java servlet 之过滤器Filter详解
- Java servlet 之过滤器Filter详解
- Java servlet 之过滤器Filter详解
- Java Web 的servlet 之过滤器 filter
- Java servlet 之过滤器Filter详解
- Java servlet 之过滤器Filter详解
- Servlet之Filter过滤器
- Servlet之过滤器filter
- Servlet之过滤器Filter
- Servlet之Filter过滤器
- Servlet之Filter过滤器
- Java Servlet Filter过滤器
- Servlet之过滤器总结--Filter
- Servlet之Filter过滤器1
- Servlet之过滤器Filter详解
- Servlet之过滤器Filter详解
- php实现页面静态化的起步
- DM8168心得之从sd卡烧写到nand
- POJ 3723 Conscription
- 关于Ubuntu中gcc g++升级问题
- uva 10304 Optimal Binary Search Tree (区间DP)
- Java-Servlet之过滤器Filter
- hdu题目分类
- Jump Game--LeetCode
- dpkg的info问题
- P67 2
- 超棒的Web和移动应用开发框架(一)
- unix-mmap()
- 关于mysql存储过程(表数据同步批量新增,批量修改)
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解