你的位置:首页 > Java教程

[Java教程]JavaWeb——过滤器


过滤器简介

  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 }

FirstFilter.java
  • init(FilterConfig ):过滤器的初始化方法,Web容器创建过滤器之后将调用这个方法,在这个方法中可以读取web.
  • doFilter(ServletRequest,ServletResponse,FilterChain):完成实际的过滤操作,是过滤器的核心方法。当用户请求访问与过滤器相关联的URL的时候,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传送给下一个过滤器(或者目标资源),或利用转发、重定向将请求转发给其他资源。
  • destroy():Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。【大多数情况下用不到】

    2.在web.

  在MyEclipse中提供了可视化的配置web.

 1 <??> 2 <web-app version="2.5"  3   ="http://java.sun.com/  4   ="http://www.w3.org/2001/  5   xsi:schemaLocation="http://java.sun.com/ 6   http://java.sun.com/> 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>

web.