版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85254886
过滤器(Filter)
概念:
它会在一组资源的前面执行,它可请求得到资源,也可以不让。过滤器具有拦截请求的功能
和Servlet一样,Filter是单例并发的。
使用方法
- 写一个类实现Filter接口
- 在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生命周期
- void init(FilterConfig filterConfig)
- 创建之后,立刻马上(Filter会在Tomcat启动时创建)
- FilterConfig 中的方法
- getFilterName() 获得过滤器的名字
getServletContext() 获得ServletContext
getInitParameter(String) 获得某个初始化参数
getInitParameterNames() 获得所有初始化参数
- getFilterName() 获得过滤器的名字
- void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- 每一次过滤都会执行
- FilterChain 中的doFilter(ServletRequest, ServletResponse)方法表示放行;相当于调用了目标Servlet的service方法,或者是执行下一个过滤器
- void destroy() 销毁之前执行(Tomcat关闭时销毁)