简介:讲解JavaWeb核⼼心知识之过滤器器Filter
什么是过滤器器:(检验是否符合要求,或者 对内容做⼆二次处理理,设置编码响应等)
- filter简单理理解:人--->检票员(filter)---> 景点
Servlet⾥面的过滤器器作⽤
- 动态地拦截请求和响应,变换或使⽤用包含在请求或响应中的信息
- 在客户端的请求访问后端资源之前,拦截这些请求。
- 在服务器的响应发送回客户端之前,处理理这些响应。
Filter的生命周期
- init(FilterConfig filterConfig) //只容器器初始化的时候调⽤用一次,即应⽤用启动的时候加载一次
- doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 只要命中过滤规则就触发,可以在filter中根据条件决定是否调⽤用chain.doFilter(request, response)方法, 即是否让目标资源执行
- destroy() //只容器器销毁的时候调用一次,即应用停止的时候调用一次
过滤器的配置方式:
web.xml方式
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name
:过滤器的名称。filter-class
:过滤器的全限定类名。url-pattern
:拦截的 URL 模式,例如:
/login
:拦截/login
请求。/*
:拦截所有请求。
注解方式
1. asyncSupported
- 说明:指定过滤器是否支持异步操作模式。默认值为
false
。 - 使用场景:如果需要处理异步请求(如 Servlet 3.0+ 异步模式),将其设置为
true
。
@WebFilter(
filterName = "AsyncFilter",
urlPatterns = "/*",
asyncSupported = true // 支持异步
)
public class AsyncFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("AsyncFilter handling request...");
chain.doFilter(request, response);
}
}
2. dispatcherTypes
- 说明:指定过滤器拦截的