Tomcat 的 DefaultServlet

问题描述:

群里有人测试 Spring MVC,没有配置任何Controller,只配置了一个view resolver,指定了前缀后缀。

然后,他问的是 当访问 localhost:8080/test 的时候,为什么会被重定向到 localhost:8080/test/

 

由于是在Spring Boot群里问的,我想当然的认为 /test对应着Controller,于是百思不得其解。后来才知道不是Spring Boot项目,而是自己新建的一个maven项目,/test 对应着项目名称。

直觉告诉我,这肯定是Tomcat的默认行为,因为项目名称对应着文件夹,而 当访问一个文件夹的时候,默认会查找其中的 index.html 等index文件,重定向完全讲得通。

 

于是查找 tomcat(7.0.52)下面的配置文件,在 conf/web.xml 的末尾发现了这样的内容:

<!-- ==================== Default Welcome File List ===================== --><!-- When a request URI refers to a directory, the default servlet looks  --><!-- for a "welcome file" within that directory and, if present, to the   --><!-- corresponding resource URI for display.                              --><!-- If no welcome files are present, the default servlet either serves a --><!-- directory listing (see default servlet configuration on how to       --><!-- customize) or returns a 404 status, depending on the value of the    --><!-- listings setting.                                                    --><!--                                                                      --><!-- If you define welcome files in your own application's web.xml        --><!-- deployment descriptor, that list *replaces* the list configured      --><!-- here, so be sure to include any of the default values that you wish  --><!-- to use within your application.                                       --><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list>

这里说的就是:当一个请求URI对应一个目录时,default servlet会查找该目录下的欢迎文件;如果存在,则返回资源;如果不存在,那default servlet 要么返回目录列表(需要配置,默认不支持),要么返回 404 状态码。

 

但这里只是描述结果,并没有原理性的东西,想要知道原理 只能去查源代码。

根据上面的内容可以知道Tomcat 有一个default servlet,那我直接使用DefaultServlet查找相应的java文件(在IDEA中新建一个Spring Boot项目,再双击 Shift,输入DefaultServlet即可),果然找到了。

demo3

嗯嗯,这里的Tomcat 是8.5.x,Spring Boot 默认的版本,但DefaultServlet的原理一致。

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

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

相关文章

spss练习数据_SPSS篇——如何在成千上百万个数据中标识重复个案

本文就带大家来学习一个小技巧&#xff0c;如何运用SPSS标识重复个案。我们都知道在Excel中&#xff0c;通常会用到“筛选”功能来选出指定条件相同的单元格。那么在SPSS中&#xff0c;如何在成千上百万个数据中筛选出重复的个案呢&#xff1f; 小编就是要告诉你&#xff0c;几…

DOxygen for C++使用说明——Markdown支持

自Doxygen 版本1.8.0&#xff0c;Markdown被引进。 接下来&#xff0c;我们将先简单介绍标准的Markdown语法&#xff0c;读者可以进入Markdown官网查询更详细的细节。然后讨论一下Doxygen支持的Markdown扩展&#xff0c;最后讨论一下Doxygen对Markdown标准的实现细节。 Stand…

方程式漏洞之复现window2008/win7 远程命令执行漏洞

前几天就想写的&#xff0c;因为一些缘故就没写。此次是在外网环境下进行的。大家在内网中也一个样。 方法&#xff1a; 使用Eternalblue模块&#xff0c;剑测是否有漏洞然后msf生成一个dll直接反弹shell. PS&#xff1a;win版本的不知道缘何生成出来的dll是0kb 我就在自己本地…

客服会话 小程序 如何发起_小程序、公众号、App三者如何融合布局?这里有一份避坑指南...

对产品经理来说&#xff0c;小程序无疑是2020年最火爆的词之一了。我们能看到&#xff0c;就在今年疫情期间&#xff0c;小程序DAU达到4.5亿&#xff0c;而超市、生鲜果蔬、社区购物等都同比增长100个点左右&#xff0c;小程序的商业价值很明显地在快速释放。小程序如此火爆&am…

DOxygen for C++使用说明——注释代码二

这一次我在谷歌搜索中检索到了Doxygen在github的仓库&#xff0c;进去一看&#xff0c;令人大喜&#xff0c;github仓库里含有了一个Doxygen的官方配置文件Doxyfile,于是下载下来&#xff0c;发现Doxyfile已经配置了将仓库中的\src文件编译成Documentation,并且将结果放在了dox…

python super()(转载)

一、问题的发现与提出 在Python类的方法&#xff08;method&#xff09;中&#xff0c;要调用父类的某个方法&#xff0c;在Python 2.2以前&#xff0c;通常的写法如代码段1&#xff1a; 代码段1&#xff1a; class A:def __init__(self):print "enter A"print "…

Swagger+Spring mvc生成Restful接口文档

2019独角兽企业重金招聘Python工程师标准>>> Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法&#xff0c;参数和模型紧密集成到服务器端…

JavaScript——变量与基本数据类型

前言 JavaScript中的变量为松散类型&#xff0c;所谓松散类型就是指当一个变量被申明出来就可以保存任意类型的值&#xff0c;就是不像SQL一样申明某个键值为int就只能保存整型数值&#xff0c;申明varchar只能保存字符串。一个变量所保存值的类型也可以改变&#xff0c;这在Ja…

vscode可以打开jupyternotebook吗_刚刚,官方宣布 VS Code 支持 Python 全开发了!

关注Python高校每天早上23:10准时推送北京时间 2019 年 9 月 21 日&#xff0c;PyCon China 2019 在上海举行。在下午的演讲中&#xff0c;来自微软开发工具事业部的资深研发工程师韩骏做了主题为《Python 与 Visual Studio Code 在人工智能应用中的最佳 Azure 实践》的演讲。在…

springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接池

在实际的应用开发中&#xff0c;与数据库交互通常使用数据库连接池来重用Connection对象&#xff0c;减少资源消耗。Spring Boot 的数据源是自动配置的。在 Spring Boot 2.2.1 版本中&#xff0c;有几种数据源配置可选&#xff0c;它们按照 HikariCP -> Tomcat -> DBCP2 …

Beyond Compare 3.3.8 build 16340 + Key

本文摘录自冰点社区&#xff1a;http://forum.z27315.com/topic/14746-beyond-compare-338-build-16340-key/ Download Beyond Compare 3 Current Version: 3.3.8, build 16340, released June 19, 2013 Windows 版本 Windows Standard and Pro EditionsEnglish version 5800k…

hdu 1198 Farm Irrigation

题目链接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid1198 题目大意&#xff1a; 有一大块土地需要浇水&#xff0c;这块土地由很多的小块土地&#xff08;有十一种&#xff09;组成&#xff0c;小块土地上有水沟&#xff0c;问至少需要建几个井&#xff0c;才能灌…

小米一键上锁工具_小米首款高端全自动智能锁火热预售中,一触开启全自动时代...

近些年&#xff0c;随着科技的发展&#xff0c;人工智能逐渐走入大众视野。人类社会也正从信息时代向“智能时代”过渡&#xff0c;在整个过程中智能家居领域的蓬勃发展可谓当仁不让&#xff0c;一直备受用户瞩目。智能锁作为家的第一道守护防线&#xff0c;家庭物联网入口的关…

Eigen+suitesparse for windows 安装

Eigen是著名的C矩阵运算库&#xff0c;提供了许多矩阵运算的接口&#xff0c;主要包括两大部分&#xff0c;一部分是稠密矩阵&#xff0c;另一部分是稀疏矩阵。Eigen以源码形式提供给大家&#xff0c;用的时候&#xff0c;只要将源码包含在项目的包含路径上&#xff0c;具体安装…

软件盘控制的问题

2019独角兽企业重金招聘Python工程师标准>>> 在全屏模式或者是沉寝室标题栏 方案一&#xff1a;全屏模式 1.软键盘被EditText遮挡住了&#xff0c;如果说EditText被嵌套在有滑动的视图中,采取的方式是: activity中设置此属性 android:windowSoftInputMode"…

求二叉树的深度和宽度

// 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。 <pre name"code" class"cpp">#include <iostream> #include <queue> using namespace std;struct BTNode {char m_value;BTNode *m_left;BTNode *m_right; };//先序创建二叉…

zabbix自动发现监控磁盘(iops和读写量)

2019独角兽企业重金招聘Python工程师标准>>> 对于磁盘有个iops的概念比较奇怪&#xff0c;想监控起来看下&#xff0c;利用zabbix的自动发现把每个磁盘的iops监控起来&#xff0c;思路&#xff1a;自动发现所有的磁盘&#xff0c;然后监控各个磁盘的iops。效果如下图…

matlab内置函数fitgeotrans与transformPointsForward解析

最近研究3000fps的实现&#xff0c;看了网上给的一个matlab代码&#xff0c;里面有提到init_shape到mean_shape的对齐&#xff0c;里面使用了fitgeotrans和transformPointsForward两个函数。于是参考matlab help研究了一下这两个函数. fitgeotrans函数 语法: tform fitgeotr…

【电脑使用经验】怎么查看无线网络中电脑的IP地址?

1、 2、 3、 4、 5、 转载于:https://www.cnblogs.com/happykoukou/p/4437111.html

win8硬盘安装Ubuntu14.04双系统參考教程

硬盘安装&#xff0c;无需光盘、U盘。win8为主。Ubuntu14.04为辅。可将Windows或Ubuntu设置为开机默认启动项。在Ubuntu下可查看、操作Windows系统下的文件&#xff1b;适用于安装和14.04版本号相近的Ubuntu系统。假设以上所述正是你所须要的。那么这可能是一篇您值得參考的教程…