@WebFilter注解拦截
@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 ):
表 3. @WebFilter 的常用属性
属性名 类型 描述
filterName String 指定过滤器的 name 属性,等价于 <filter-name>
value String[] 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatterns String[] 指定一组过滤器的 URL 匹配模式。等价于 <url-pattern> 标签。
servletNames String[] 指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 <servlet-name> 的取值。
dispatcherTypes DispatcherType 指定过滤器的转发模式。具体取值包括:
ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParams WebInitParam[] 指定一组过滤器初始化参数,等价于 <init-param> 标签。
asyncSupported boolean 声明过滤器是否支持异步操作模式,等价于 <async-supported> 标签。
description String 该过滤器的描述信息,等价于 <description> 标签。
displayName String 该过滤器的显示名,通常配合工具使用,等价于 <display-name> 标签。
下面是一个简单的示例:
@WebFilter(servletNames = {"SimpleServlet"},filterName="SimpleFilter")
public class LessThanSixFilter implements Filter{...}
如此配置之后,就可以不必在 web.xml 中配置相应的 <filter> 和 <filter-mapping> 元素了,容器会在部署时根据指定的属性将该类发布为过滤器。它等价的 web.xml 中的配置形式为:
<filter>
<filter-name>SimpleFilter</filter-name>
<filter-class>xxx</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleFilter</filter-name>
<servlet-name>SimpleServlet</servlet-name>
</filter-mapping>
由上文可知,使用@WebFilter相当于配置了web.xml,现在用eclipse自动生成Filter时,默认是提供这个注解的,如下所示
package webcase;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
/**
* Servlet Filter implementation class CountFilter
*/
@WebFilter("/CountFilter")
public class CountFilter implements Filter {
private int count;
private String param;
private FilterConfig fConfig;
/**
* Default constructor.
*/
/*public CountFilter() {
// TODO Auto-generated constructor stub
}*/
/**
* @see Filter#destroy()
*/
我们知道,tomcat根据<filter-mapping>的顺序初始化Filter,由于上面的代码包含@WebFilter("/CountFilter"),相当于在web.xml中对同一个过滤器CountFilter设置了两次<filter>和<filter-mapping>,故这个过滤器会初始化两次,故当@WebFilter设置的过滤器被初始化时,String param=getInitParameter("count")得到的字符串为空,调用Integer.parseInt(param)时引发NumberFormatException异常。去掉@WebFilter("/CountFilter")后则一切正常。
@WebFilter注解拦截相关推荐
- (转)Servlet3.0下@WebFilter注解配置Filter
Servlet3.0下@WebFilter注解配置Filter Filter(过滤器)主要对请求到达前进行处理,也可以在请求结束后进行处理,类似于链式.一个请求可以被多个过滤器拦截到,会依次进入各个F ...
- Spring Boot 技术知识点:如何详解@WebFilter注解
功能说明 在servlet3.0以后,我们可以不用在web.xml文件内配置Filter,只需要加上@WebFilter注解就可以实现,以达到简化配置的目的.该注解用来声明servlet过滤器,将会在 ...
- Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:wangzaiplus www.jianshu.com/p/ ...
- springboot + redis + 注解 + 拦截器 实现接口幂等性校验
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:https://www.jianshu.com/p/6189275403ed 一.概念 ...
- @slf4j注解_SpringBoot + Redis + 注解 + 拦截器 实现接口幂等性校验
一.概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多 ...
- springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验
优质文章,及时送达 作者 | wangzaiplus 链接 | www.jianshu.com/p/6189275403ed 一.概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证 ...
- redis 判断存在性_springboot + redis + 注解 + 拦截器 实现接口幂等性校验
提醒:后面有些图片模糊,请点击原文查看清晰图片 一.概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同 ...
- springboot幂等性_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验
一.概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如:订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次 ...
- javaWeb自己定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题
javaWeb自己定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题 参考文章: (1)javaWeb自己定义可排序过滤器注解,解决Servlet3.0下@WebFi ...
最新文章
- PHPUnit实践三(构建模块化的测试单元)
- 刚体运动中变换矩阵的逆
- Word 2010 制作文档结构之章节自动编号
- 常用有话帧检测技术(VAD)
- 给谷歌浏览器安装vue调试工具:vue-devtools
- ubuntu20.04 cudnn7.5.6_每日一题|小学数学1——6年级天天练习
- Win7系统 待机后 不断网的 配置方法
- 2022云栖大会开幕 阿里张勇:以更先进技术承担更大责任
- 普渡大学工程学院计算机工程,普渡大学电气工程专业申请条件.pdf
- 港大HKU邮箱(connect.hku.hk)添加至iphone 自带邮箱方法
- 广义相对论基础【2】广义相对论中的张量+张量代数
- 【LeetCode刷题笔记-39 714.买卖股票的最佳时机(含手续费)】
- 免费的css模板下载
- SNTP获取时间源统一时间
- 接入Google fit指南
- 【干货收藏】统计分析/机器学习吐血整理最强指南
- NVIDIA在GDC展示最新DX10开发套件
- 计算机软件如何更新,计算机显卡驱动怎么更新
- Python实战总结——把坑踩遍,让别人无坑可踩(二)
- vue搭建项目、创建登录页面和后台交互之引入axios