创新互联JSP教程:JSP过滤器

Servlet和JSP中的过滤器都是Java类,它们存在的目的如下:

在衢州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站建设 网站设计制作按需开发,公司网站建设,企业网站建设,品牌网站制作,成都全网营销,外贸营销网站建设,衢州网站建设费用合理。

  • 在请求访问后端资源时拦截它
  • 管理从服务器返回给客户端的响应

下面列出了多种常用的过滤器类型:

  • 认证过滤器
  • 数据压缩过滤器
  • 加密过滤器
  • 触发资源访问事件的过滤器
  • 图像转换过滤器
  • 登录和验证过滤器
  • MIME类型链过滤器
  • 令牌过滤器
  • 转换XML内容的XSL/T过滤器

过滤器将会被插入进web.xml文件中,然后映射servlet、JSP文件的名字,或URL模式。部署描述文件web.xml可以在 \conf 目录下找到。

当JSP容器启动网络应用程序时,它会创建每一个过滤器的实例,这些过滤器必须在部署描述文件web.xml中声明,并且按声明的顺序执行。

Servlet过滤器方法

一个过滤器就是一个Java类,它实现了javax.servlet.Filter 接口。javax.servlet.Filter接口定义了三个方法:

序号 方法 &描述
1 public void doFilter (ServletRequest, ServletResponse, FilterChain)

每当 request/response要通过过滤链时容器会调用这个方法,因为客户端请求链尾的资源

2 public void init(FilterConfig filterConfig)

容器调用这个方法来表明一个过滤器被安置在服务中

3 public void destroy()

容器调用这个方法来表明一个过滤器正在从服务中移除

JSP过滤器示例

这个例子将会打印IP地址和每次访问JSP文件的日期时间。当然,这只是个简单的例子,让您了解一些简单的过滤器用法,但是可以使用这些概念来自行构造更复杂的程序。

//  引入Java包
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// 实现 Filter 类
public class LogFilter implements Filter  {
   public void  init(FilterConfig config) 
                         throws ServletException{
      // 获取初始化参数
      String testParam = config.getInitParameter("test-param"); 
 
      //打印初始化参数
      System.out.println("Test Param: " + testParam); 
   }
   public void  doFilter(ServletRequest request, 
                 ServletResponse response,
                 FilterChain chain) 
                 throws java.io.IOException, ServletException {
 
      // 获取客户端ip地址  
      String ipAddress = request.getRemoteAddr();
 
      // 输出ip地址及当前时间
      System.out.println("IP "+ ipAddress + ", Time "
                                       + new Date().toString());
 
      // 传递请求道过滤器链
      chain.doFilter(request,response);
   }
   public void destroy( ){
      /* 在Filter实例在服务器上被移除前调用。*/
   }
}

编译LogFilter.java文件,然后将编译后的class文件放在/webapps/ROOT/WEB-INF/classes目录下。

web.xml文件中的JSP过滤器映射

过滤器被定义,然后映射成一个URL或JSP文件名,与servlet被定义然后映射的方式差不多。在部署描述文件web.xml中,使用标签来进行过滤器映射:


   LogFilter
   LogFilter
   
	  test-param
	  Initialization Paramter
   


   LogFilter
   /*

上述过滤器将会应用在所有servlet和JSP程序中,因为我们在配置中指定了" /*"。您也可以指定一个servlet或JSP路径,如果您只想要将过滤器应用在少数几个servlet或JSP程序中的话。

现在,像平常一样访问servlet或JSP页面,您就会发现服务器日志中产生了关于此次访问的记录。您也可以使用Log4J记录器来把日志记录在其它文件中。

使用多重过滤器

您的网络应用程序可以定义很多不同的过滤器。现在,您定义了两个过滤器,AuthenFilter和LogFilter,其它的步骤与前面讲的一样,除非要创建一个不同的映射,就像下面这样:


   LogFilter
   LogFilter
   
	  test-param
	  Initialization Paramter
   

 

   AuthenFilter
   AuthenFilter
   
	  test-param
	  Initialization Paramter
   

 

   LogFilter
   /*

 

   AuthenFilter
   /*

过滤器的应用顺序

在web.xml中元素的映射顺序决定了容器应用这些过滤器的顺序。要反转应用的顺序,您只需要反转web.xml中元素的定义顺序就行了。

比如,上面的例子会首先应用 LogFilter然后再应用AuthenFilter,但是下面这个例子将会反转应用的顺序:


   AuthenFilter
   /*

 

   LogFilter
   /*

本文题目:创新互联JSP教程:JSP过滤器
文章来源:http://www.hantingmc.com/qtweb/news16/235466.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联