Filter 专属注解:@WebFilter
和 Servlet 的@WebServlet一模一样用法,完全对应 xml 配置。
一、最简写法
注解版
importjavax.servlet.annotation.WebFilter;importjavax.servlet.*;@WebFilter("/*")// 拦截所有请求publicclassMyFilterimplementsFilter{@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain){// 前置处理System.out.println("过滤器拦截了");// 放行,走后续 Servlet/JSPchain.doFilter(request,response);// 后置处理}}二、等价 XML 配置
<filter><filter-name>MyFilter</filter-name><filter-class>com.xxx.MyFilter</filter-class></filter><filter-mapping><filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>完全等价。
三、@WebFilter 常用配置
1. 拦截指定路径
@WebFilter("/admin/*")2. 拦截多个路径
@WebFilter(urlPatterns={"/login","/user/*"})3. 拦截后缀
@WebFilter("*.do")4. 完整带名称配置
@WebFilter(filterName="EncodingFilter",urlPatterns="/*")四、补充小知识点
- 注解
@WebFilter也是Servlet 3.0 及以上才支持,和@WebServlet同一版本。 - Filter、Servlet、Listener 都有对应注解:
- Servlet →
@WebServlet - Filter →
@WebFilter - Listener →
@WebListener
- Servlet →
- 不要同时注解 + xml配置同一个过滤器,会冲突报错。