关于程序员:JavaWeb之过滤器Filter

3次阅读

共计 1343 个字符,预计需要花费 4 分钟才能阅读完成。

过滤器 Filter

依赖于 servlet 容器,基于函数回调,能够对申请和响应进行拦挡,在拜访后端资源之前,拦挡这些来自客户端的申请,在发送回客户端之前,解决这些响应

过滤器的类型

  • 身份验证过滤器
  • 数据压缩过滤器
  • 加密过滤器
  • 触发拜访事件资源的过滤器
  • 图像转换过滤器
  • 日志记录和审核过滤器
  • MIME- 类型链过滤器
  • Tokenizing 过滤器
  • 转换 XML 内容的 XSL/ T 过滤器

<!– more –>

过滤器的应用

须要实现 Filter 接口,其中蕴含有 FilterChain 过滤器链和 FilterConfig 过滤器配置

public interface Filter {
      // 由 servlet 容器调用,批示一个过滤器被放入服务,能够获取 web.xml 中过滤器的参数
    void init(FilterConfig config) throws ServletException;
        // 在每次一个申请或响应在所对应的资源下时通过链传递,由容器调用
    void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
        // 由 servlet 容器调用,批示一个过滤器从服务去除
    void destroy();}

​ 并且在 web.xml 中配置写好的 Filter

<filter>
  <filter-name>security</filter-name>
  <filter-class>com.zhanghe.study.webstudy.filter.SecurityFilter</filter-class>
  <!-- 用户名 -->
  <init-param>
    <param-name>userName</param-name>
    <param-value>john</param-value>
  </init-param>
</filter>

<!-- 拦挡的程序与在 web.xml 中 filter-mapping 的配置程序无关,靠前的先被调用 -->
<filter-mapping>
  <filter-name>security</filter-name>
  <!-- 除了能够应用 url-pattern 形式进行拦挡,还能够指定 servlet-name 形式指定 servlet 来进行拦挡 -->
  <url-pattern>/*</url-pattern>
  <!-- 在 filter-mapping 中有一个 dispatcher 标签,指定过滤器所拦挡的资源被 Servlet 容器的调用形式
                能够是 REQUEST,INCLUDE,FORWARD 和 ERROR, 默认是 REQUEST
                REQUEST  间接拜访
                INCLUDE  通过 RequestDispatcher 的 include 办法拜访
                FORWARD  通过 RequestDispatcher 的 forward 办法拜访
                ERROR    通过申明式异样解决机制调用时拜访
                能够指定多个 dispatcher 来指定 Filter 对资源的多种调用形式进行拦挡 -->
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

https://zhhll.icu/2021/javaweb/ 根底 /5. 过滤器 /

本文由 mdnice 多平台公布

正文完
 0