• 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>
  • 相关阅读:
    神经网络回顾-感知机
    遗传算法杂记
    差分进化算法DE和粒子群算法PSO
    遗传算法GA
    Caffe学习 五 conv_layer与im2col
    Selenium
    Selenium
    Selenium
    Selenium
    Selenium
  • 原文地址:https://www.cnblogs.com/lukelook/p/9699722.html
Copyright © 2020-2023  润新知