美文网首页
Filter基础

Filter基础

作者: Mr_J316 | 来源:发表于2019-05-21 14:19 被阅读0次

2019-05-21

Filter简介

Filter中文译名为过滤器。过滤器在request到达Servlet之前,拦截request,根据需要检查或修改request。并且在response到达客户端之前,拦截response,检查或修改response

Filter可以构成过滤器链(FilterChain),一个FilterChain包括多个Filter,形成客户端与服务器端之间的一层滤网。

创建Filter

所有Servlet过滤器类必须实现javax.servlet.Filter接口。该接口有3个必须实现的方法:

init(FilterConfig):过滤器初始化方法,服务器启动时创建过滤器实例时自动调用该方法,并且只执行一次。方法可以读取web.xml文件中过滤器的初始化参数。

doFilter(ServletRequest,ServletResponse,FilterChain):完成实际的过滤操作,每次有客户端请求时都会被调用。如果该请求不合法则阻塞该请求;如果该请求合法则可通过FilterChain参数将request递交给FilterChain中下一个Filter,如果所有的Filter都走完了则交给Servlet处理。

destroy():服务器停止时在销毁过滤器实例前调用,释放过滤器占用的资源。

public class FirstFilter implements Filter{
    public void init(FilterConfig filterConfig) throws ServletException{
    }
    
    public void doFilter(ServletRequest request,ServletResponse  response,
                         FilterChain chain) throws IOException, ServletException {
    }
    
    public void destroy() {
    }
}

在web.xml文件中配置Filter

<filter> 
  <filter-name>FirstFilter</filter-name> 
  <filter-class>com.filter.FirstFilter</filter-class> 
</filter> 
<filter-mapping> 
  <filter-name>FirstFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping> 
  • <filter-name>指定过滤器名字,<filter-class>指定过滤器的全限定名。
  • <filter-mapping>用于将过滤器和URL关联 ,当客户请求的URL和<url-pattern>指定的URL相匹配时,就会触发过滤器。如果希望过滤器能过滤所有的客户请求,可以将<url-pattern>的值设置为/*,如果只过滤JSP文件,则可设置为 *.jsp
  • 可以配置多个Filter,按照web.xml的配置顺序依次执行。<filter-mapping>配置在前的Filter先执行,形成一个串联效果。

使用注解

@WebFilter(filterName="名字",urlPatterns="url")
@WebFilter("url")

注解配置的多个Filter可以通过文件名的字典顺序执行

Filter应用

字符编码过滤EncodingFilter

使用post请求发送中文时会出现乱码,可以使用过滤器拦截所有请求,统一修改编码

@WebFilter("/*")    //拦截所有请求
public class EncodingFilter implements Filter {
    
    ......
        
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");  //修改编码
        chain.doFilter(request, response); 
    }

    ......
}

相关文章

  • Spring Boot-Filter过滤器使用

    零、本文纲要 一、Filter作用 二、Filter使用1、基础准备2、编写Filter3、扫描Filter4、测...

  • 第一章 d3基础概念

    svg基础 滤镜 渐变

  • Filter基础

    2019-05-21 Filter简介 Filter中文译名为过滤器。过滤器在request到达Servlet之前...

  • 集合式的函数API

    1.1、基础:filter和map filter函数遍历集合并选出应用给定lambda后会返回true的那些元素 ...

  • 集合的函数API

    基础 filter 和 map filter进行条件过滤需要的新集合 map进行元素操作改变元素内容,生成新集合 ...

  • JavaScript基础-filter

    1、和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函...

  • 数组操作

    总结:join(),concat(),slice(),filter(),reduce()数组本身保持不变 数组基础...

  • mongodb使用记录----查询文档

    基础语法 db.collection.find( , ) 说明:query filter: 查询条件,指名返回哪...

  • JS基础回顾:filter

    一、filter定义: filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。 ...

  • JavaWeb基础之Filter

    编写一个过滤器 实现Filter接口 配置拦截的URL路径:在web.xml中填写 过滤器的常见应用 实现用户登录...

网友评论

      本文标题:Filter基础

      本文链接:https://www.haomeiwen.com/subject/zpqjzqtx.html