Web.xml中设置Servlet和Filter时的url-pattern匹配规则

Java|servlet关于url-pattern路径匹配的问题 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。1 前言关于servlet的路径映射有三种配置方法,通过配置xml文件中的url-patter... 阅读详情

转自:http://www.cnblogs.com/kevin-yuan/archive/2012/12/24/2831333.html

Web.xml中设置Servlet和Filter时的url-pattern匹配规则

之前一直都对配置文件里面的路径和通配符不是很熟悉,都是复制之前项目里面的,错了就试探性的微调一下,现在专门花点时间整理一下,梳理一下杂乱 无章的知识。

 

一、servlet容器对url的匹配过程:

当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html(我的应用上下文是test),容器会将http://localhost/tes去掉,将剩下的/aaa.html部分拿来做servlet的映射匹配,也就是拿这剩下的部分与web.xml中配置的servlet的url-pattern进行匹配。注意:这个映射匹配过程是有一定的规则的,而且每次匹配最终都只匹配一个 servlet。(这一点和filter不同)

 

匹配规则如下:(它的匹配原则就是:找到唯一一个最适合的Servlet)

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(/test/*.action为不合法的url-pattern)

 

4. 如果前面三条规则都没有找到一个servlet,容器会根据url选择对应的请求资源。如果应用定义了一个default servlet,则容器会将请求丢给default servlet(什么是default servlet?后面会讲)。

 

 

对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。

 

二、url-pattern详解

在web.xml文件中,以下语法用于定义映射:

① 以”/’开头和以”/*”结尾的是用来做路径映射的。

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

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

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

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

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用 本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。 阅读详情

相关推荐

SWAT模型参数太多搞不定?一篇讲清如何用SWAT-CUP筛选关键敏感参数(含结果图解读)

本文详细解析了如何使用SWAT-CUP进行参数敏感性分析,帮助水文模型初学者从上百个参数中筛选出关键敏感参数。通过实际案例和结果图解读,介绍了敏感性分析的核心价值、SWAT-CUP结果界面解读方法以及参数筛选的四步实战法,显著提升模型调试效率。文章还提供了典型问题排查手册,解决敏感参数与文献不一致、率定后模型变差等常见问题。

weixin_30385925的博客 321

解决Servlet4.0 注解匹配404问题 IDEA版

今天遇到的servlet4.0在IDEA上的配置问题解决,根源主要是jsp文件和servlet中的url不相匹配。 web.xml中的 /:代表项目根路径 在src源文件下建立的servlet.class类中配置的@WebServlet()中的 /:代表项目根路径 http://localhost:8080/Myweb/ jsp中的/: 服务器根路径 http://localhost:808...

chen_wwww的博客 2204

Qt多线程实战:如何优雅地处理Modbus设备通信中的线程安全问题

本文深入探讨了在Qt框架下实现Modbus设备通信时的多线程安全问题,提供了优雅的解决方案。通过生产者-消费者模型、任务队列与锁机制等设计模式,有效解决了界面卡顿、数据包错乱等问题。文章还详细介绍了对象生命周期管理、信号槽连接类型选择等关键实现细节,帮助开发者构建稳定可靠的Modbus通信模块。

weixin_30897233的博客 484

Filter的url匹配问题总结(url-pattern配置)

web.xml配置文件中,有下列语法问题: 以“/”开头并且以“/*”结尾的根据路径映射 例如:             struts2         /struts/*      以"*."开头的作为根据扩展名映射 例如:         struts2         *.jsp      因此,在xml中出现如下配置会出现 IllegalA

张三的专栏 1万+

基于遗传算法的柔性作业车间调度(初始化以及编码策略)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

菜鸡 8594

排队论在食堂窗口规划中的应用:M/M/S模型优化案例

本文通过食堂窗口规划的真实案例,详细阐述了如何运用排队论中的M/M/S模型量化服务效率。文章从问题拆解、数据采集、模型计算到成本效益分析,提供了完整的数学建模实战指南,帮助读者掌握利用最优化方法解决资源配置问题的核心流程与工具。

docker7nomad的博客 1084

Servlet和Filter的url匹配以及url-pattern详解

① 完全匹配 /test/list.do② 目录匹配 /test/* ③ 扩展名匹配 *.do servlet-mapping的重要规则:      ☆ 容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。      ☆ 如果一个请求匹配多个“目录匹配”,容器会选择最长的匹配。Servlet和Filter的url匹配以及url-pattern详解     Ser

forchase的专栏 5824

【论文精读】Latent Diffusion

Latent Diffusion

weixin_44934783的博客 4476

servlet的url-pattern匹配规则简介

前言:正在看SpringMVC的前端控制器,正好看到了一个<url-pattern>/</url-pattern>,由此引发对url-pattern匹配规则的思考。                                        第一章 匹配概述 <url-pattern>是我们用Servlet做Web项目时需要经常配置的标签,例: &lt...

仰望星空 1万+

在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。

wyr1849089774的博客 8268

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3189

servlet与filter的url-pattern设置方式及映射规则

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。    一,servlet容器对url的匹配过程: 当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://lo

语不惊人死不休 1万+

Python爬虫实战:使用最新技术抓取百度贴吧帖子内容

本文详细介绍了使用Python最新技术抓取百度贴吧帖子的完整流程。通过库,我们实现了高效的异步爬虫,具备JavaScript渲染、智能反爬应对、数据持久化等高级功能。这个爬虫框架具有良好的扩展性,可以根据具体需求进行功能增强。

2201_76125261的博客 779

servlet、filter、interceptor的url匹配规则

前言 在配置filter过滤器的时候过滤器竟然不起作用。然后在网上查阅了许多信息,整理而成一篇文章。在查阅信息的过程中,对路径匹配也有了更清晰的了解。参考文章真的写的很棒,链接在文章最后。另外,还有一篇关于servlet的路径匹配的源码解读:Servlet容器Tomcat中web.xml中url-pattern的配置详解,留着,以后再来学习。 [ 2018.03.19 最新更新 ] Sprin...

LLLLEE 的博客 3891

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

web.xml文件中servlet的url-pattern匹配规则

一、首先需要明确几容易混淆的规则: servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则。 Servlet 2.5开始,一个servlet可以使用多个url-pattern规则,<servlet-mapping>标签声明了与该servlet相应的匹配规则,每个<url-pattern>标签代表1个匹配规则; 当servlet容器接收到浏览器...

黎明前的黑暗 2352

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

web.xml中的url-pattern详解

Servlet和filter是J2EE开发中常用的技术,使用方便,配置简单。servlet和filter中的url-pattern有一些文章在里面的,总结了一些东西,以免遇到问题又要浪费时间。 一、先精确匹配,再路径匹配 (路径匹配的时候,先最长路径匹配,再最短路径匹配),至于扩展名匹配,就是单独于精确匹配和匹配的一类了,以上都找不到servlet,就用默认的servlet,配置为<ur...

一只苟延残喘的卑微蝼蚁 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

web.xml中url-pattern匹配规则

今天刚好要写一个验证用户是否登陆的过滤器,所以把web.xml中关于url-pattern的匹配规则重新熟悉了一下: 一,servlet容器对url的匹配过程:  当 一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是 http://localhost/test/aaa.html,我的应用上下文是test

技术人生 1528

java filter url匹配规则_servlet的url-pattern匹配规则详细描述(小结)

一、概述在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆。本文来详细举例介绍下。下面的说明都是在tomcat服务器中得到验证的。先介绍一下匹配的概念,上例子代码。在一个app(如名字为myapp)的web.xml文件中,有如下信息:MyServletcom.nau....

weixin_34618526的博客 977

Servlet 、Filter 的url-pattern

url-pattern在web.xml中< servlet-mapping > 、< filter-mapping >中都需要配置< url-pattern >,他们的作用都是用于匹配一次请求是否会执行这个Servlet或Filter。url-pattern 何时匹配 Servlet的匹配: 一个请求最终被分配到一个Servlet,是由org.apache.tomcat.util.http.Mapp

缄默无言,存念于心 620
上一篇: servlet中获取地址
下一篇: 原始DAO开发
转的你死
博客等级 码龄15年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值