JSP入门教程:JSP过滤器 - 极悦
首页 课程 师资 教程 报名

JSP入门教程:JSP过滤器

  • 2020-08-25 13:10:06
  • 1202次 极悦


JSP过滤器大家应该都有有所了解,在JSP入门教程当中就有相关教程。


JSP入门教程


JSP 和 Servlet 中的过滤器都是 Java 类。


过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。


可以将一个或多个过滤器附加到一个 Servlet 或一组 Servlet。过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。


过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:


• 在客户端的请求访问后端资源之前,拦截这些请求。


• 在服务器的响应发送回客户端之前,处理这些响应。


根据规范建议的各种类型的过滤器:


• 身份验证过滤器(Authentication Filters)。


• 数据压缩过滤器(Data compression Filters)。


• 加密过滤器(Encryption Filters)。


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


• 图像转换过滤器(Image Conversion Filters)。


• 日志记录和审核过滤器(Logging and Auditing Filters)。


• MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。


• 标记化过滤器(Tokenizing Filters)。


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


过滤器通过 Web 部署描述符(web.xml)中的 XML 标签来声明,然后映射到您的应用程序的部署描述符中的 Servlet 名称或 URL 模式。


当 Web 容器启动 Web 应用程序时,它会为您在部署描述符中声明的每一个过滤器创建一个实例。


Filter 的执行顺序与在 web.xml 配置文件中的配置顺序一致,一般把 Filter 配置在所有的 Servlet 之前。


1.png


JSP 过滤器实例


以下是 Servlet 过滤器的实例,将输出网站名称和地址。本实例让您对 Servlet 过滤器有基本的了解,您可以使用相同的概念编写更复杂的过滤器应用程序:


//导入必需的 java 库
import javax.servlet.*;
import java.util.*;

//实现 Filter 类
public class LogFilter implements Filter  {    
    public void  init(FilterConfig config) throws ServletException {        
        // 获取初始化参数        
        String site = config.getInitParameter("Site");         
        
        // 输出初始化参数        
        System.out.println("网站名称: " + site);     
     }    
     public void  doFilter(ServletRequest request, ServletResponse response, Filter
     Chain chain) throws java.io.IOException, ServletException {        
     
         // 输出站点名称        
         System.out.println("站点网址:http://www.runoob.com");        
         
         // 把请求传回过滤链        
         chain.doFilter(request,response);    
      }    
      public void destroy( ){        
          /* 在 Filter 实例被 Web 容器从服务移除之前调用 */    
      }
}


DisplayHeader.java 文件代码如下:


//导入必需的 java 库
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet
;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/DisplayHeader")


//扩展 HttpServlet 类
public class DisplayHeader extends HttpServlet { 

     // 处理 GET 方法请求的方法 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 

          // 设置响应内容类型 
          response.setContentType("text/html;charset=UTF-8"); 

          PrintWriter out = response.getWriter(); 
          String title = "HTTP Header 请求实例 - 菜鸟教程实例"; 
          String docType = 
                " \n"; 
                out.println(docType + 
                "\n" +
                "" + title + "\n"+                      "\n" +
                "" + title + "\n" + 
                "\n" + 
                "\n" + 
                "Header 名称Header 值\n"+
                "\n"); 

         Enumeration headerNames = request.getHeaderNames(); 
      
         while(headerNames.hasMoreElements()) { 
                String paramName = (String)headerNames.nextElement(); 
                out.print("" + paramName + "\n"); 
                String paramValue = request.getHeader(paramName); 
                out.println(" " + paramValue + "\n"); 
          } 
          out.println("\n"); 
      } 
      // 处理 POST 方法请求的方法
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
          doGet(request, response); 
      }
}


过滤器的应用顺序


web.xml 中的 filter-mapping 元素的顺序决定了 Web 容器应用过滤器到 Servlet 的顺序。若要反转过滤器的顺序,您只需要在 web.xml 文件中反转 filter-mapping 元素即可。


例如,上面的实例将先应用 LogFilter,然后再应用 AuthenFilter,但是下面的实例将颠倒这个顺序:


<filter-mapping>
   <filter-name>AuthenFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交