将请求映射到servlet的规则

参考资源

详情可以参考:https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#mapping-requests-to-servlets

URL路径的使用

web容器接收到客户端的请求,决定转发给哪个web应用。被选中的web 应用必须具有最长的上下文(context path)路径(从请求URL开始匹配)。URL中匹配的部分就是映射到servlet的上下文路径。

请求URL中用于映射到servlet的部分是去掉上下文路径、去掉路径参数的部分。按照如下的URL映射规则进行,顺序从上到下。如果发现了一条匹配的规则,就不再往后查找:

  1. 容器尽量发现请求路径和servlet路径的精确匹配。成功匹配后,也就选定了处理该请求的servlet。
  2. 容器递归尽力查找最长匹配的路径前缀(path-prefix)。成功匹配后,也就选定了处理该请求的servlet。
  3. 如果路径的最后一段包含一个扩展名(例如.jsp),容器尽量匹配一个处理该扩展名的servlet。扩展名定义为最后一个"."字符后面的部分。
  4. 如果上面的三个规则都没有匹配上,容器试图根据请求提供适合的内容。如果配置了默认(“default”)servlet,那么会使用该默认的servlet。

映射规范

在web应用描述符(web.xml),用如下语法定义映射:

  • 以"/“字符开头、以”/*"结尾的字符串用于路径匹配。
    例如:
<servlet-mapping><servlet-name>restful-addnumbers</servlet-name><url-pattern>/addnumbers/*</url-pattern>
</servlet-mapping>
  • 以"*."前缀开头的字符串作为一个扩展名匹配。
    例如:*.bop
  • 空字符串(“”)是一个特殊的URL模式。它精确映射到应用的上下文的根,即请求的形式是http://host:port/<context-root>/。在这种情况下,路径信息(path info)是"/“,servlet path和context path是空字符串(”")。
  • 字符串串只包含"/"这样一个字符,表示应用的默认servlet(“default” servlet)。在这种情况下,servlet path 等于 请求URI 减去上下文路径(context path),路径信息(path info)是null。
  • 所有其它的字符串只用于精确匹配。

隐含匹配

如果容器包含一个JSP容器,那么*.jsp扩展名映射到该JSP容器,这个称为隐含映射。但如果应用明确定义了*.jsp映射,那么应用定义的映射优先级高于隐含映射。

举例

采用servlet规范中的例子:https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#example-mapping-set

在这里插入图片描述

当一个应用进来的时候,上面配置的映射规则产生下面的实际匹配结果:
在这里插入图片描述
注意:/catalog/index.html/catalog/racecar.bop没有使用servlet映射中配置的/catalog这条规则,因为/catalog代表的是精确匹配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/185190.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js中的child_process模块的作用

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

搭载紫光展锐V510平台 移远通信RG500U-EA 5G模组获全球首个GCF认证

近日&#xff0c;搭载紫光展锐V510平台的移远通信工规级5G模组RG500U-EA顺利通过GCF认证&#xff0c;成为全球首款通过该认证的基于紫光展锐平台的5G模组。 GCF认证是一种国际性的产品一致性认证&#xff0c;该认证的通过&#xff0c;表明搭载紫光展锐V510的终端产品可满足不同…

计网----数据库(一)

计网----数据库&#xff08;一&#xff09; 一.什么是数据库 数据库是”按照数据结构来组织、存储和管理数据的仓库“。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 二.数据库的特点 1.规范化的本地存储 2.加密 3.共享 三.数据库的好处…

时间序列预测:深度学习、机器学习、融合模型、创新模型实战案例(附代码+数据集+原理介绍)

本文介绍->给大家推荐一下我的时间序列预测实战专栏&#xff0c;本专栏平均质量分98分&#xff0c;而且本专栏目前免费阅读。其中涉及机器学习、深度学习、融合模型、个人创新模型、数据分析等一系列有关时间序列的内容&#xff0c;其中的实战案例不仅有简单的模型类似于机器…

【面经】如何查看服务器内存和磁盘空间占用

查看服务器内存占用 free -g查看服务器磁盘空间占用 df -h

精进·第1篇:分享一个3年战略规划框架思路

首发&#xff1a;麦子禾咨询 作者&#xff1a;石头 正如解决问题的思路不止一个&#xff0c;做战略规划的思路、框架、模型&#xff0c;石头认为&#xff0c;肯定也不止华为类的业务领先模型BLM、业务战略执行力模型BEM、从战略规划到战略执行DSTE流程&#xff0c;以及轻量级…

Halcon WPF 开发学习笔记(0):开篇介绍

文章目录 文章专栏Halcon是什么&#xff1f;安装教学视频链接简单来说 Halcon快速开发环境确认新建项目 文章专栏 Halcon开发 Halcon是什么&#xff1f; 史上最全VisionPro和Halcon 的详细对比 Halcon简述 Halcon基础大全&#xff08;基础算子、高阶算子、数组、分割、字符检测…

【算法与数据结构】17、LeetCode电话号码的字母组合

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题需要解决的问题有三个&#xff1a; 一、如何实现数字到字母的映射二、如何实现组合问题三、如何解…

Python进阶该怎么学?有什么书推荐吗?

给大家再分享一下整理出来的Python进阶以及Python实践操作可以参考学习的堪称经典的书籍&#xff0c;同样是豆瓣高分榜&#xff01;内容有点长&#xff0c;一定要耐心看完。 Python进阶学习书籍 Effective Python&#xff1a;编写高质量Python代码的90个有效方法&#xff08;…

Read-Easy Excel源码解析(一)

Read&Write-Easy Excel 当我们需要导入大Excel时候&#xff0c;用POI会内存溢出&#xff0c;这时候我们用EasyExcel来解决&#xff0c;它底层采用的是SAX&#xff08;Simple Api for Xml&#xff09;事件驱动&#xff0c;解析xml的方式来解析excel文件。 首先我们看他的re…

畜牧业RFID电子耳标读卡器品牌选哪个好?怎么选?

在畜牧业中&#xff0c;RFID电子耳标读卡器是一个非常重要的设备&#xff0c;它可以帮助养殖户追踪和管理动物&#xff0c;进行牲畜的身份识别、盘点计数、自动饲喂、防疫分栏管理、出入栏管理、智能称重等操作&#xff0c;提高生产效率和减少损失。 近年来&#xff0c;随着国…

antd Form 校验自定义复杂判断-validator

antd Form 校验 加入自定义复杂逻辑 <Form.Itemlabel"编码"name"code"rules{[{required: true,validator: (_rule, value) > {if (value ) {return Promise.reject(请输入编码);}return IsExist(value).then((res) > {if (res?.statusCode 20…

广域网加速的作用:企业为什么需要广域网加速?

由于局域网与广域网之间巨大的带宽鸿沟&#xff0c;通过增加带宽来满足膨胀的流量需求是不切实际的。 并且广域网带宽成本较高&#xff0c;增加广域网带宽对任何企业都意味着巨大的成本负担。这些使得控制 管理广域网带宽使用成为必需。 企业为什么要加速广域网? 对重要的企…

在Windows 10上安装单机版的hadoop-3.3.5

1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以不需要了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群进行高速运算和存储。 2、下载Hadoop&#xff0c;我们在清华大学的镜像站下载 Index of /apache/hadoop/core/hadoop-3.3.6 (t…

【字符串】【双指针翻转字符串+快慢指针】Leetcode 151 反转字符串中单词【好】

【字符串】【双指针翻转字符串快慢指针】Leetcode 151 反转字符串中单词 解法1 双指针翻转字符串快慢指针更新数组大小 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- ---------------&#x1f388;&#x1f388;解答链接…

求臻人故事 | 年轻的求臻人,厉害了

在这个快节奏的社会中&#xff0c;我们时常忽略了身边的“小人物”&#xff0c;他们或许默默无闻&#xff0c;或许平凡无奇&#xff0c;但他们的经历、奋斗和成就&#xff0c;却能给我们带来深深的启示。让我们一起走进每个平凡的求臻人世界&#xff0c;聆听他们的“大故事”&a…

使用 AIGC ,ChatGPT 快速合并Excel工作薄

职场数据处理&#xff0c;数据分析汇报与统计的过程中&#xff0c;经常会遇到这样的一个问题那就是需要统计的数据源在多个文件中&#xff0c;多个工作薄中&#xff0c;如果要进行数据处理&#xff0c;汇总的时候会很不方便 例如&#xff1a; 如果要汇总6个月的数据可能就得需…

clang插件对llvm源码插桩,分析函数调用日志(2)--google镜像

tick_plot__compile.ipynb clang插件对llvm源码插桩&#xff0c;分析函数调用日志(1) 分析 进出、链、出 df进出df[ df[tickKind].isin( [FuncEnter,FuncReturn] ) ]#代码中&#xff0c;只有在函数进入时&#xff0c;计算了链条长度 并写磁盘 df入df[ df[tickKind].isin…

SQL SERVER Inregration Services-OLE DB、Oracle和ODBC操作

OLE DB链接器 OLE DB插件下载&#xff1a;https://learn.microsoft.com/zh-cn/sql/connect/oledb/download-oledb-driver-for-sql-server?viewsql-server-ver16 配置OLE DB Connection Manager 在点击“新建”时&#xff0c;会弹出警告信息“不支持指定的提供程序&#xff0…