一,servlet容器对url的匹配过程:
当一个请求发送到servlet容器的时候,容器 先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test /aaa.html,我的应用上下文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部分拿来做 servlet的映射匹配。这个映射匹配过程是有顺序的,而且当有一个servlet匹配成功以后,就不会去理会剩下的servlet了(filter不 同,后文会提到)。其匹配规则和顺序如下:
1. 精确路径匹配。例 子:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先 进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,也不会去理会其他的servlet了。
2. 最长路径匹配。例 子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此 时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
3. 扩展匹配,如果url最后一段包含扩展,容器将会根据扩展选择合适的servlet。例子:servletA的url-pattern:*.action
4. 如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet(什么是default servlet?后面会讲)。
根据这个规则表,就能很清楚的知道servlet的匹配过程,所以定义servlet的时候也要考虑url-pattern的写法,以免出错。
对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。
二,url-pattern详解
在web.xml文件中,以下语法用于定义映射:
l 以”/’开头和以”/*”结尾的是用来做路径映射的。
l 以前缀”*.”开头的是用来做扩展映射的。
l “/” 是用来定义default servlet映射的。
l 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action
所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。
- 浏览: 482660 次
- 性别:
- 来自: 沈阳
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
相关推荐
web.xml 中的listener、 filter、servlet 加载顺序及其详解
Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试
关于filter、servlet在web.xml配置及加载顺序
编写 Servlet 并添加两个 Filter,并确保在 Servlet 执行之前和之后执行这些 Filter。 以下是实现此目的的步骤: 首先,创建一个 Java Web 项目并添加必要的库和依赖项,以便可以编写 Servlet 和 Filter。 创建一个...
本源码将详细介绍web.xml配置中servlet,filter,listener的加载顺序,可以让学习者更好的了解web.xml各种属性配置,自己写的东西,不足之处请大家见谅,顺便收点积分也好下资料,谢谢
简单的servlet+Filter的例子,简单的结合这两个的例子。
Spring 管理filter 和servlet
详细的解释了servlet filter listener 额知识,本文档适合初学者阅读
servlet之Filter使用范例--登陆验证,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45480101
JSP 演示代码 技术:JSP Servlet JavaBean Filter 实现:过滤器实现权限登录功能。
Servlet之Filter深入讲解及实例研究 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45480101
Servlet与jsp与Filter的使用
模仿servlet 的filter写的,拦截器涉及模式的具体实现
Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter
java servlet spring web filter listenr
web.xmllistener、filter、servlet加载顺序.pdf
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于Jsp+Tomcat+Servlet+Filter的超市管理系统源码+数据库.zip
javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
重写了servlet能实现乱码过滤,并能屏蔽敏感字符!