首页 > 编程语言 > 详细

JavaWeb——过滤器

时间:2015-03-27 00:51:30      阅读:283      评论:0      收藏:0      [点我收藏+]

过滤器简介

  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.xml中的过滤器参数。
  • doFilter(ServletRequest,ServletResponse,FilterChain):完成实际的过滤操作,是过滤器的核心方法。当用户请求访问与过滤器相关联的URL的时候,Web容器将先调用过滤器的doFilter方法。FilterChain参数可以调用chain.doFilter方法,将请求传送给下一个过滤器(或者目标资源),或利用转发、重定向将请求转发给其他资源。
  • destroy():Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。【大多数情况下用不到】

    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>
web.xml

 

JavaWeb——过滤器

原文:http://www.cnblogs.com/happyfans/p/4370332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!