博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DispatcherServlet的url mapping为“/”时,对根路径访问的处理
阅读量:4451 次
发布时间:2019-06-07

本文共 1288 字,大约阅读时间需要 4 分钟。

背景

众所周知,Tomcat的Default Servlet的servlet-mapping为

1 
2
default
3
/
4

如果在基于SpringMVC的项目中做如下设置:

  • DispatcherServlet的 url-pattern同样设置为 “/”
  • 在web.xml中添加
1     
2
index.html
3
index.jsp
4

 

  • 在后台代码中添加Controller,用于响应对应用根目录的访问,代码如下
@Controllerpublic class HomeController {    public HomeController() {    }    @RequestMapping(value = "/",method = RequestMethod.GET)    public String home(){        return "home"; //home为/WEB-INF/views/home.jsp页面的逻辑名称    }    @RequestMapping(value = "/test",method = RequestMethod.GET)    public String test(){        return "home";    }}

 

那么问题如下:

如果访问应用的根路径,是返回index.html页面,还是进入HomeController 并返回 home.jsp?

测试结果

  1. 在DefaultServlet和DispatcherServlet同时生效的情况下:
    • 如果存在index.html页面,则返回index.html,不会进入到Controller代码中
    • 如果不存在index.html页面,则进入controller,并返回/WEB-INF/views/home.jsp页面
  2. 在DefaultServlet被注释,DispatcherServlet生效的情况下:
    • 结果同上
  3. 在DefaultServlet被注释,DispatcherServlet不配置的情况下:
    • 如果存在index.html页面,则返回index.html
    • 如果不存在index.html页面,则报错

结果分析

  1.   默认欢迎文件的处理由Tomcat容器负责,与任何Servlet无关;
  2. 如果同时配置了处理根路径映射的Servlet和欢迎页面,则优先返回欢迎页面,请求不会到达Servlet;
  3. 如果DispatcherServlet的mapping为“/”,则DispatcherServlet会覆盖容器默认的DefaultServlet

转载于:https://www.cnblogs.com/canger/p/7875470.html

你可能感兴趣的文章
Linux之crontab
查看>>
清除浮动
查看>>
JAVA优化建议
查看>>
Docker --- 安装MySQL
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>
Linux改变语言设置的命令
查看>>
loadrunner Vugen-Tools General-Options-Replay设置
查看>>
redis限频
查看>>
Floyd判圈算法
查看>>
接口,lambda表达式与内部类(二)
查看>>
Phabricator是什么,代码审查工具
查看>>
Java虚拟机类加载机制
查看>>
UITextView,UIWebView 直接显示html代码
查看>>
DirectX:函数可以连接任意两个filter 分类: Direct...
查看>>
Android APP开发入门教程-Button 分类: JAVA ...
查看>>
WustOJ 1575 Gingers and Mints(快速幂 + dfs )
查看>>
js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结...
查看>>
算法:求从1到n这n个整数的十进制表示中1出现的次数-- python 实现
查看>>
CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
查看>>
LintCode 58: Compare Strings
查看>>