美文网首页
Servlet过滤器

Servlet过滤器

作者: 米都都 | 来源:发表于2019-01-10 08:43 被阅读0次
  • 过滤器的作用

    (1) 当用户对Web应用的请求到达之前,过滤器进行拦截和处理,然后再交给被请求的部分

    (2) 在Web应用将数据返回到用户之前,过滤器进行拦截和处理,然后再交给用户

  • 过滤器可以有 0个或多个,顺序按照web.xml中声明的先后顺序进行处理(可以理解为多面墙,请求到来时先通过A墙,再通过B墙;响应发送时,先通过B墙,再通过A墙)

  • 所有过滤器都要实现 javax.servlet.Filter接口,这个接口中包括3个方法

    (1) init()

    生成过滤器对象时调用,主要完成初始化工作

    (2) destroy()

    过滤器对象被销毁时调用,释放过滤器对象所占用的资源

    (3) doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)

    完成过滤功能。 处理request可以完成作用1, 处理response可以完成作用2, 调用FilterChain的doFilter()方法可以调用下一个过滤器的doFilter()方法,直到无过滤器可调用,处理请求的Servlet或JSP

  • 配置过滤器

    (1) 示例

      <filter>
          <filter-name>AFilter</filter-name>
          <filter-class>filter.AFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>AFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    

    (2) 说明

    <url-pattern>代表需要过滤资源的路径匹配,/*代表/路径下的所有资源

    <init-param>代表filter初始化参数,可以通过filterConfig.getInitParameter()方法读到

  • 对于中文字符的输出乱码问题,可以配置一个过滤器来解决,而且这个过滤器要放在 web.xml的最前面

    EncodingFilter.java

      public class EncodingFilter implements Filter {
    
          private String characterEncoding;
          private String contentType;
    
          public void init(FilterConfig filterConfig) throws ServletException {
    
              this.characterEncoding = filterConfig.getInitParameter("characterEncoding");
              this.contentType = filterConfig.getInitParameter("contentType");
          }
    
          public void destroy() {
          }
    
          public void doFilter(ServletRequest servletRequest,
                               ServletResponse servletResponse,
                               FilterChain filterChain) throws IOException, ServletException {
    
              servletRequest.setCharacterEncoding(this.characterEncoding);
    
              servletResponse.setCharacterEncoding(this.characterEncoding);
              servletResponse.setContentType(this.contentType);
    
              filterChain.doFilter(servletRequest, servletResponse);
         }
      }
    

    web.xml中的配置(注意要放在所有filter的最前面)

      <filter>
          <filter-name>EncodingFilter</filter-name>
          <filter-class>filter.EncodingFilter</filter-class>
          <init-param>
              <param-name>characterEncoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
              <param-name>contentType</param-name>
              <param-value>text/html;charset=utf-8</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>EncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    

相关文章

  • 2022-03-21 Web基础知识(7)- Servlet (

    Servlet Filter(过滤器)、Servlet FilterChain(过滤器链)、Servlet Fil...

  • 过滤器

    Servlet分3中: 简单Servlet 过滤器Servlet 监听器Servlet 过滤器的基本概念 Filt...

  • Spring MVC之拦截器、过滤器学习

    过滤器使用 过滤器是属于Servlet,在javax.servlet.*下面。 添加servlet组件扫描 创建过...

  • Servlet基础2

    Servlet编写过滤器 Servlet 过滤器是可用于 Servlet 编程的 Java 类,有以下目的:1.在...

  • Java基础——过滤器和监听器

    什么是过滤器? Servlet过滤器和Servlet十分相似,但它具有拦截客户端请求的功能,Servlet过滤器可...

  • 过滤器 Filter

    Servlet 可以分为简单 Servlet 、过滤器和监听器,过滤器本质上也是 Servlet ,只不过它是 T...

  • javaweb Filter详解

    1. Servlet过滤器的概念 Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Se...

  • Interceptor和Filter区别

    过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的...

  • spring-boot 拦截

    过滤器 Filter过滤器并不是标准的Servlet,它只是对Web容器和Servlet之间的过滤器。主要是对Se...

  • Spring Boot:定制拦截器

    Servlet 过滤器属于Servlet API,和Spring关系不大。除了使用过滤器包装web请求,Sprin...

网友评论

      本文标题:Servlet过滤器

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