JavaWeb(十一)---过滤器(Filter)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85254886

过滤器(Filter)

概念:

它会在一组资源的前面执行,它可请求得到资源,也可以不让。过滤器具有拦截请求的功能

和Servlet一样,Filter是单例并发的。

使用方法

  1. 写一个类实现Filter接口
  2. 在web.xml上配置
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

/----------------------------------------------------
<filter-mapping>下的<dispatcher>
设置过滤器的四种拦截方式
Data Type : string
Enumerated Values : 
	- FORWARD   转发
	- INCLUDE    包含
	- REQUEST    重定向
	- ERROR        错误

<filter-mapping>下的<url-pattern>替换成<servlet-name>表示点名拦截该Servlet

Filter生命周期

  1. void init(FilterConfig filterConfig)
    1. 创建之后,立刻马上(Filter会在Tomcat启动时创建)
    2. FilterConfig 中的方法
      1. getFilterName() 获得过滤器的名字
        getServletContext()  获得ServletContext
        getInitParameter(String)  获得某个初始化参数
        getInitParameterNames()  获得所有初始化参数
  2. void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
    1. 每一次过滤都会执行
    2. FilterChain 中的doFilter(ServletRequest, ServletResponse)方法表示放行;相当于调用了目标Servlet的service方法,或者是执行下一个过滤器
  3. void destroy() 销毁之前执行(Tomcat关闭时销毁)

猜你喜欢

转载自blog.csdn.net/a592381841/article/details/85254886
今日推荐