zoukankan      html  css  js  c++  java
  • JSP 过滤器

    JSP教程 - JSP过滤器

    JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类。

    过滤器可用于执行验证,加密,日志记录,审核。

    我们可以将过滤器映射到应用程序部署描述符文件web.xml中的JSP名称或URL模式。

    过滤器按照在部署描述符中声明的顺序执行。

    过滤器是实现javax.servlet.Filter接口的Java类。

    javax.servlet.Filter接口定义了三个方法:

    方法描述
    doFilter(ServletRequest,ServletResponse,FilterChain) 当请求/响应对通过链时由容器调用。
    init(FilterConfig filterConfig) 指示正在投入使用的过滤器。
    void destroy() 向过滤器指示其正在被停止服务。
     

    例子

    以下代码显示如何创建打印IP地址的JSP过滤器。

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;
     
    public class LogFilter implements Filter  {
       public void  init(FilterConfig config) 
                             throws ServletException{
          String testParam = config.getInitParameter("test-param"); 
          System.out.println("init");
       }
       public void  doFilter(ServletRequest request, 
                     ServletResponse response,
                     FilterChain chain) 
                     throws java.io.IOException, ServletException {
     
          String ipAddress = request.getRemoteAddr();
          System.out.println("IP "+ ipAddress);
     
          chain.doFilter(request,response);
       }
       public void destroy( ){
          System.out.println("destroy");
       }
    }

    编译LogFilter.java并将LogFilter.class类文件放在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。

    在部署描述符文件web.xml中为过滤器标记创建以下条目:

    <filter>
       <filter-name>LogFilter</filter-name>
       <filter-class>LogFilter</filter-class>
       <init-param>
        <param-name>your-param</param-name>
        <param-value>Initialization Parameter</param-value>
       </init-param>
    </filter>
    <filter-mapping>
       <filter-name>LogFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping

    上面的过滤器将应用于所有的JSP,因为我们在我们的配置中指定了/*

    多个过滤器

    web.xml中的过滤器映射元素的顺序确定Web容器将过滤器应用于servlet或JSP的顺序。

    以下代码显示如何在web.xml文件中使用两个过滤器。

    <filter>
       <filter-name>LogFilter</filter-name>
       <filter-class>LogFilter</filter-class>
       <init-param>
        <param-name>test-param</param-name>
        <param-value>Initialization Parameter</param-value>
       </init-param>
    </filter>
     
    <filter>
       <filter-name>MyFilter</filter-name>
       <filter-class>MyFilter</filter-class>
       <init-param>
        <param-name>test-param</param-name>
        <param-value>Initialization Parameter</param-value>
       </init-param>
    </filter>
     
    <filter-mapping>
       <filter-name>LogFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
     
    <filter-mapping>
       <filter-name>MyFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>

    要从上面的web.xml中反转过滤器顺序,请使用以下命令:

    <filter-mapping>
       <filter-name>MyFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
     
    <filter-mapping>
       <filter-name>LogFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 相关阅读:
    Xcode7下模拟器输入文本无法显示系统键盘的解决办法
    Mac系统下开启和关闭隐藏文件的方法
    iOS常用第三方开源框架和优秀开发者博客等
    UILabel 的一个蛋疼问题
    学习进度条
    学习进度条
    四则运算2
    学习进度条
    第一次被要求连接数据库的课堂测试
    课后作业06多态与接口
  • 原文地址:https://www.cnblogs.com/lukelook/p/9699722.html
Copyright © 2011-2022 走看看