将请求映射到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代表的是精确匹配。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LittleXi】C程序预处理、编译、汇编、链接步骤

【LittleXi】C程序预处理、编译、汇编、链接步骤 C程序 #include<stdio.h> int main(){int x1,y1;printf("xy%d",xy); }1、预处理 将头文件引入进来、除去注释、宏定义下放 执行指令 g -E esc.c -o esc.i 2、编译 将处理好的代码编译为汇编代码.s 执行…

测试行业爬了7年,从功能测试到高级测试,工资也翻了好几倍

我在测试行业爬了7年。从功能测试到现在成为高级测试&#xff0c;我的工资也翻了好几倍。 入门阶段&#xff08;功能测试&#xff09; 个人认为&#xff0c;测试的前景还不错&#xff0c;只要你肯努力&#xff1b;刚出来的时候在鹅厂做外包功能测试。每天都很悠闲。点了两年&a…

Cesium深入浅出之自定义材质

引子 做为一名技术宅却没有能拿得出手的技术无疑是最可悲的事情。三年前&#xff0c;当我第一次接触Cesium的时候就被它强大和炫丽所折服&#xff0c;最关键的是它还是开源的。以前我一直是机械地敲着业务代码&#xff0c;好像计算机程序就只能干这点事情一样&#xff0c;而 C…

基于缎蓝园丁鸟算法优化概率神经网络PNN的分类预测 - 附代码

基于缎蓝园丁鸟算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于缎蓝园丁鸟算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于缎蓝园丁鸟优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

[CANN训练营]UART通信笔记

文章目录 前言一、前提知识1.串行通信2.并行通信3.单工、半双工、全双工通信3.1单工通信3.2半双工通信3.3全双工通信 4.补充&#xff1a;通信速率 二、UART通信1.UART通信2.UART工作原理 总结 前言 在ROS学习中&#xff0c;我们在入门基础除了ROS的小乌龟外&#xff0c;在通信…

【云栖2023】林伟:大数据AI一体化的解读

本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;林伟 | 阿里云研究员&#xff0c;阿里云计算平台事业部首席架构师&#xff0c;阿里云人工智能平台PAI和大数据开发治理平台DataWorks负责人 演讲主题&#xff1a;大数据AI一体化…

UMI4 AntDesignProV5 如何修改favicon 及放置的位置(AntDesignProV5 V4对比)

项目场景&#xff1a; 修改系统的favicon.ico AntDesignProV4 修改方式 因为在V4版本中&#xff0c;有根目录文件&#xff0c;可在文件中直接指定&#xff1a; <!-- document.ejs --><head><link rel"icon" type"image/x-icon" href&quo…

一篇揭秘Linux高性能服务epoll 的本质

导语 epoll接口是为解决Linux内核处理大量文件描述符而提出的方案。该接口属于Linux下多路I/O复用接口中select/poll的增强。其经常应用于Linux下高并发服务型程序&#xff0c;特别是在大量并发连接中只有少部分连接处于活跃下的情况 (通常是这种情况)&#xff0c;在该情况下能…

卫星位置解算

武大GPS原理及应用 1.广播星历&#xff08;预报星历&#xff09; 预报星历所得的轨道精度有限&#xff0c;精度在2m左右。 2.精密星历 P 、卫星PRN、卫星在地心地固坐标系坐标&#xff08;与wgs84有点差别&#xff09;、卫星钟差。 通过内插或者拟合来获取任意时刻的卫星位…

python---数据库操作

python的错误和异常 异常&#xff1a; 运行期检测到的错误被称为异常。 try语句按照如下方式工作&#xff1a; 首先&#xff0c;执行try子句&#xff08;在关键字try和关键字except之间的语句&#xff09; 如果没有异常发生&#xff0c;忽略except子句&#xff0c;try子句执…

Federated Social Recommendation with Graph Neural Network

基于图神经网络的联合社交推荐 ACM-TIST CCF_B类 论文链接 代码地址 模型中梯度和embedding的聚合 在FeSog中&#xff0c;Server端维护一个整体的model&#xff0c;由于这里的model层网络和GraphAttentionLayer层网络中一共有10个要更新参数&#xff0c;所以当每次server端将…

对测试职业发展的思考

虽然在测试行业摸爬滚打了很年&#xff0c;随着年龄的增长&#xff0c;职位的升迁&#xff0c;似乎已经走到了尽头&#xff0c;因而还是时不时觉得自己的职业发展目标很模糊&#xff0c;这是最近对自己职业发展的一些思考&#xff0c;希望与大家进行分享和探讨&#xff1a; 1、…

3、Linux库的生成和使用(核心代码是程序员不可公开的小秘密)

目录 Linux库的概念 Linux 静态库 Linux 静态库作用 Linux 静态库的创建 1. 将.c文件生成.o文件 ​编辑 2. 将所有的.o文件归档为一个静态库.a文件 Linux 静态库的使用 Linux 动态库&#xff1a; Linux 动态库作用 Linux 动态库的创建 生成.so动态库文件 ​编辑 …

curl(八)时间和环境变量以及配置

一 时间 ① --connect-timeout 连接超时时间 ② -m | --max-time 数据最大传输时间 -m&#xff1a; 限制curl 完成时间(overall time limit)-m,--max-time <seconds> 整个交互完成的超时时间场景&#xff1a; 通过设置-m参数,可以避免请求时间过长而导致的超时错误…

jstack java堆栈跟踪工具

jstack java堆栈跟踪工具 1、jstack介绍 jstack&#xff08;stack trace for java&#xff09;是java虚拟机自带的一种堆栈跟踪工具。 jstack主要用于生成java虚拟机当前时刻的线程快照&#xff0c;线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合&#xf…

MacOS Ventura 13 优化配置(ARM架构新手向导)

一、系统配置 1、About My MacBook Pro 2、在当前标签打开新窗口 桌面上创建目录的文件夹&#xff0c;每次新打开一个目录&#xff0c;就会创建一个窗口&#xff0c;这就造成窗口太多&#xff0c;不太好查看和管理&#xff0c;我们可以改成在新标签处打开新目录。需要在&…

数字滤波器设计---IIR 滤波器设计

数字滤波器设计---IIR 滤波器设计 IIR 与 FIR 滤波器的比较 与 FIR 滤波器相比&#xff0c;IIR 滤波器的主要优点是&#xff0c;要满足同一组设定&#xff0c;它的滤波器阶数通常远远低于 FIR 滤波器。虽然 IIR 滤波器具有非线性相位&#xff0c;但 MATLAB 软件中的数据处理通…

【数据分享】我国雏鹰企业数据(excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 本次我们为大家带来的…

jumpserver任意密码重置漏洞-CVE-2023-42820

目录 jumpserver 环境搭建 这里用的是vulhub靶场 进入 jumpserver 的目录 修改配置文件 config.env 里面的 DOMAINS 参数为kali的地址 运行环境&#xff0c;第一次运行的话会拉取文件&#xff0c;要耐心等待。 命令&#xff1a; 查看docker容器 命令&#xff1a; 用浏…

【分享】Excel“只读方式”的两种模式

查阅Excel表格的时候&#xff0c;担心不小心修改了内容&#xff0c;可以给Excel设置以“只读方式”打开&#xff0c;这样就算修改了内容也不能直接保存表格。Excel表格可以设置两种“只读方式”&#xff0c;一起来看看吧&#xff01; “只读方式” 1&#xff1a; 打开Excel表…