JSP过滤器

Servlet和JSP过滤器是Java类,可用于在Servlet和JSP编程用于以下目的:

  • 拦截来自客户端请求访问资源的后端之前。

  • 要从服务器操作的响应,才传送回客户端。

有各种各样的类型的过滤器由规范建议:

  • 验证过滤器。

  • 数据压缩过滤器

  • 加密过滤器。

  • 过滤器触发资源访问的事件。

  • 图像转换过滤器。

  • 日志记录和审计的过滤器。

  • MIME类型过滤器链。

  • 标记化的过滤器。

  • XSL/ T过滤器,转换XML内容。

过滤器被部署在部署描述符文件web.xml中,然后映射到任何servlet或在您的应用程序的部署描述符中的JSP名称或URL模式。部署描述符文件web.xml中可以<Tomcat-installation-directory> conf目录下找到。

当JSP容器启动您的Web应用程序,它创建的每个过滤器,您在部署描述符中声明了一个实例。过滤器因为它们在部署描述符中声明的顺序执行。

Servlet过滤器的方法:

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

S.N. 方法 & 描述
1 public void doFilter (ServletRequest, ServletResponse, FilterChain)
This method is called by the container each time a request/response pair is passed through the chain due to a client request for a resource at the end of the chain.
2 public void init(FilterConfig filterConfig)
This method is called by the web container to indicate to a filter that it is being placed into service.
3 public void destroy()
This method is called by the web container to indicate to a filter that it is being taken out of service.

JSP Filter 例子:

以下是JSP的过滤器示例,将每一次访问任何JSP文件打印的客户端的IP地址和当前日期时间。这个例子会给你的JSP过滤器基本的了解,但您可以使用相同的概念编写更复杂的过滤器应用:

// Import required java librariesimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*; // Implements Filter classpublic class LogFilter implements Filter { public void init(FilterConfig config) throws ServletException{ // Get init parameter  String testParam = config.getInitParameter("test-param"); //Print the init parameter  System.out.println("Test Param: " + testParam); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { // Get the IP address of client machine.  String ipAddress = request.getRemoteAddr(); // Log the IP address and current timestamp. System.out.println("IP "+ ipAddress + ", Time " + new Date().toString()); // Pass request back down the filter chain chain.doFilter(request,response); } public void destroy( ){ /* Called before the Filter instance is removed from service by the web container*/ }}

编译LogFilter.java以通常的方式,把您的LogFilter.class类文件放到<Tomcat-installation-directory>/webapps/ ROOT/ WEB-INF/ classes中。

JSP过滤器映射在web.xml中:

过滤器定义,然后映射到一个URL或JSP文件名,在大致相同的方式为Servlet的定义,然后映射到web.xml文件中的URL模式。创建过滤器标签中的部署描述符文件web.xml中的下列项目