WEB过滤器是一个服务器端的组件,它可以截取用户端的请求与相应信息,并对这些信息过滤。
在没有Web过滤器的情况下,用户直接访问服务器上的Web资源。但是如果存在过滤器,用户就不可以直接访问过滤器了。
Web容器启动的时候过滤器就已经启动了,用户的请求到达过滤器,过滤器判断用户的请求是否符合过滤规则,如果符合规则则将用户的请求发送给Web资源,Web资源将响应信息发送给过滤器,过滤器将Web资源的响应发送给用户。工作原理如下图所示:
过滤器的生命周期:
其中实例化方法在Web容器开始装载的时候就执行,初始化方法配置一些初始化参数,Web容器卸载(服务器关闭)的时候执行销毁方法。过滤方法会执行多次,其他方法只会执行一次。
1.创建一个类实现javax.servlet.Filter接口。需要实现该接口中的3个方法。
1 package filter; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 12 public class FirstFilter implements Filter { 13 14 public void destroy() { 15 System.out.println("执行过滤器的销毁方法!"); 16 17 } 18 19 public void doFilter(ServletRequest request, ServletResponse response, 20 FilterChain filterChain) throws IOException, ServletException { 21 System.out.println("开始执行过滤器的doFilter方法。"); 22 filterChain.doFilter(request, response); 23 System.out.println("结束执行过滤器的doFilter方法。"); 24 } 25 26 public void init(FilterConfig arg0) throws ServletException { 27 System.out.println("执行过滤器的初始化方法。"); 28 29 } 30 31 }
2.在web.xml中配置过滤器(和再web.xml中注册servlet类似)
在MyEclipse中提供了可视化的配置web.xml,如下图:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <display-name></display-name> 8 <welcome-file-list> 9 <welcome-file>index.jsp</welcome-file> 10 </welcome-file-list> 11 12 <!-- 配置过滤器开始 --> 13 <filter> 14 <filter-name>FirstFilter</filter-name> 15 <filter-class>filter.FirstFilter</filter-class> 16 </filter> 17 <filter-mapping> 18 <filter-name>FirstFilter</filter-name> 19 <url-pattern>/*</url-pattern> 20 </filter-mapping> 21 <!-- 配置过滤器结束 --> 22 23 </web-app>
原文:http://www.cnblogs.com/happyfans/p/4370332.html