Web 过滤器参数设置问题
问题描述:
在代码定义了3个过滤器,分别为filter1,filter2,filter3,过滤的Servlet范围分别是"/*","/Servlet1","/Servlet1",只在filter3种配置了初始化参数 预设结果为:
filter1...进...
filter2...进...
filter3...进...
com.roxy_filter.Filter3
hello
filter3...出...
filter2...出...
filter1...出...
运行结果却是:
filter1...进...
filter2...进...
filter2...出...
filter1...出...
问题代码:
@WebFilter(filterName="filter3", servletNames="/Servlet1",
initParams={
@WebInitParam(name="ok", value="hello")
}
)
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("filter3...进...");
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
String v = fConfig.getInitParameter("ok");
System.out.println(v);
chain.doFilter(request, response);
System.out.println("filter3...出...");
}
问题分析:
首先将filter3的@WebFilter声明改为和filter2一致,输出正常,说明doFilter()方法没有问题 仔细查看文档,发现有两个参数:
servletNames String[]:指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 <servlet-name> 的取值
urlPatterns :指定要过滤的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
所以将servletNames="/Servlet1"改为urlPatterns ="/Servlet1",表明只对Servlet1进行过滤,运行,结果正确
问题解决:
@WebFilter(filterName="filter3", urlPattens="/Servlet1",
initParams={
@WebInitParam(name="ok", value="hello")
}
)
问题总结:
web3.0 之后,对于servlet,filter,listener有两种配置方式,一种是在web.xml种进行传统的配置,另一种是直接在类种进行注解式声明 @WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 )
| 属性名 | 类型 | 描述 |
| 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> 标签 |
Web 过滤器参数设置问题的更多相关文章
- maven web项目配置log4j,及log4j参数设置
本文为博主原创,转载须注明转载地址: 1.在maven项目中引入相关的依赖: 需要依赖的jar为: <!-- 配置日志 --> <dependency> <groupId ...
- Asp.Net中的获取Web.config中设置的参数!(前后台的代码示例)
一.Web.config中设置代码 <appSettings> <add key="deleted" value="1" ...
- 使用MEF实现通用参数设置
通用后台管理系统必备功能模块包含日志管理,权限管理,数据字典,参数配置等功能.参数设置主要用于设置系统运行所需的一些基础性配置项,比如redis缓存,mq消息队列,系统版本等信息.好的参数设置需要达到 ...
- 细说 Web API参数绑定和模型绑定
今天跟大家分享下在Asp.NET Web API中Controller是如何解析从客户端传递过来的数据,然后赋值给Controller的参数的,也就是参数绑定和模型绑定. Web API参数绑定就是简 ...
- C3p0的参数设置
C3p0的参数设置:ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释 ...
- jvm参数设置大全
转自:http://blog.csdn.net/kthq/article/details/8618052 参数说明 -Xmx3550m:设置JVM最大堆内存为3550M. -Xms3550m:设置JV ...
- Parameter Binding in ASP.NET Web API(参数绑定)
Parameter Binding in ASP.NET Web API(参数绑定) 导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnbl ...
- tomcat端口修改以及jvm启动参数设置
1.端口更改:找到config目录下server.xml文件 如下 <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to t ...
- weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目
这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...
随机推荐
- MySQL主从数据一致性检验
MySQL主从数据一致性检验 检查主从数据一致性,我们使用pt-table-checksum ,pt-table-checksum是percona-tools一个工具,用来校验主从库数据是不是一致. ...
- sql,用 ISNULL(), NVL(), IFNULL() and COALESCE() 函数替换空值
在数据库操作中,往往要对一些查询出来的空值进行替换,如函数SUM(),这个函数如果没有值会返回NULL,这是我们不希望看到的, 在MySQL中我们可以这样来写: ) ... 在SQLSERVER中我们 ...
- 读博 在没有导师PUSH的情况下该何去何从?
读博已有两月之久,与导师也是仅有的一面之缘,短短数分钟谈话大致总结便是看看基础知识,再然后就没有什么了,突然之间有些小懵逼.突然间感慨这就是我的博士生涯的生活,这就没有啦,以后就这么过啦?在读博士之前 ...
- 当ORACLE归档日志满后如何正确删除归档日志
当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE. 一.首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格 ...
- opencv-python教程学习系列3-视频操作
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍视频的获取和保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 ...
- 使用git错误日志
错误日志 pull错误 将远程仓库内容pull下来的过程中,碰到了拒绝合并两个不相关的历史,所以无法下载,同样的也无法push 但是我的东西明明是从组织里克隆下来的,只是做了一些修改 后来我我尝试不替 ...
- ubuntu 部署wordPress
准备 LAMP 环境 1.安装 Apache2 sudo apt-get install apache2 -y 安装好后,您可以通过访问服务器IP地址 x.x.x.x 查看到 “it works” 界 ...
- hdu 5310(贪心)
题意:要买n个纪念品,单价p元,有团购价 m个q元,问怎样买钱最少 这个是BC周年庆第一题,水题昂,小学数学题,就是看n个纪念品单买.总体买团购然后零头买单价的.全部买团购价的多买也无所谓的,然后直接 ...
- 详解Hadoop Slots的含义
Slots是Hadoop的一个重要概念.然而在Hadoop相关论文,slots的阐述难以理解.网上关于slots的概念介绍也很少,而对于一个有经验的Hadoop开发者来说,他们可能脑子里已经理解了sl ...
- 记录 ThinkPHP 5.* 漏洞修复后的情况
记录 ThinkPHP 5.* 漏洞修复后的情况 ThinkPHP 官方 2018-12-09 下午收到漏洞报告. 2018-12-09 晚上看到 Git 已经更新了,修复了漏洞. 2018-12-1 ...