问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在访问servlet时filter的urlpatterns怎么配置

发布网友 发布时间:2022-04-23 14:48

我来回答

2个回答

懂视网 时间:2022-04-23 19:09

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。

一,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. 以”/’开头和以”/*”结尾的是用来做路径映射的。

2. 以前缀”*.”开头的是用来做扩展映射的。

3. “/” 是用来定义default servlet映射的。

4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action

所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

另外,关于url-pattern映射之后, request的servletContextPath , ServletPath , PathInfo 情况,可参照下面链接的文章

 1 servlet与filter的url-pattern设置方式: 
 2 
 3 1、精确匹配: 
 4 /directory/file1.jsp 
 5 /directory/file2.jsp 
 6 /directory/file3.jsp 
 7 
 8 2、目录匹配: 
 9 /directory/*
 10 
 11 3、扩展匹配:
 12 *.jsp
 13 
 14 注意:下面的不支持:
 15 /direcotry/*.jsp
 16 
 17 /和/*之间的区别:
 18 <url-pattern>/</url-pattern>: 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
 19 <url-pattern>/*</url-pattern>:会匹配所有url:路径型的和后缀型的url(包括/login , *.jsp , *.js 和 *.html 等)
 20 <url-pattern>/</url-pattern>: 甚至会造成The requested resource () is not available.

热心网友 时间:2022-04-23 16:17

1、/* 代表过滤所有
2、/demo/* 代表过滤demo目录下所有
3、*.do 代表所有以do结尾的

2和3不能混用
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天涯论坛的网址是什么啊? 如何辨别天涯社区的官方网站? 天涯社区的官方网址是什么呀? 嘉陵火星人(150CC)报价 广西能上150C的摩托车牌吗 隆鑫200cc和150cc的发动机怎么辨认_百度问一问 150cc大船摩托车问题!请高手帮我·· 我想问问这是125cc还是150cc 滁州琅琊山的门票要多少钱 为什么手机连上WiFi却无法上网了? 如何看待逢年过节就要红包的人? 不同的结构体系的标准层施工流程 杨超越在粉丝群发6万红包,她是一个很宠粉的艺人吗? 情人节男人给一个女人送了花给另外一个女人发的红包他可爱的是哪个人_百度问一问 关于servlet的url-pattern设置问题 介绍中国 中国爱国人士的简介 短一点 谢谢 刚自助解封的是不是暂时加不了人 刚解封的要注意什么 限制解开后要多久才能正常使用添加好友呢? “应付账款”科目在房地产开发企业的妙用 打车软件怎么用的? 如何使用打车软件 打车APP到底怎么用 名望千娇百媚祛斑霜含激素吗 千娇百媚的化妆品怎么样 中国潜艇最深能潜多少米 贵阳千娇美色商贸有限公司怎么样? 萁美丽丝化妆品8件套多少钱 潜艇的潜至深度最多能潜至多少米? 层间抗侧力结构不应小于上一层受剪承载力 为什么这样规定 有没有 阿城《棋王》》电子版书籍百度网盘资源下载 象棋王主题曲棋王哪里下载 请问哪里可以下载谢园主演的电影《棋王》?不是梁家辉版 区块链中linra是什么 什么是区块链服务器? 应用市场里省流量更新是什么意思 每次有升级的应用都会显示有几MB划掉 然后省流量升级几MB……是什么意思?有点懂又不太确定,是需要 刚用手机管家更新QQ时我连着WiFi开着数据,更新之后显示省流量更新失败请重新下载怎么回事有事吗? 怎样更省流量 小米八大金刚团队处于什么阶段 小米2s八大金刚问题 小米2s八大金刚 都有吗 小米2s八大金刚什么意思 小米2s八大金刚是什么?在手机哪? 金立大金刚2跟小米max2比谁更好 魅族mx2和小米2s哪个好?各有什么优缺点 枮小米可以煮成粥吗? 新米煮粥是不是更容易糊 怎么配置servlet filter