Spring MVC项目名称为何出现在GET请求的URL中?
问题分析与解决
你遇到的问题是因为Tomcat部署项目时默认将项目名作为上下文路径(Context Path),所以访问路径会带上项目名spring-mvc-app1。你的Spring MVC配置本身没有问题,DispatcherServlet已经映射到根路径/,但上下文路径的设置导致了完整路径的变化。
解决办法
方法1:修改Eclipse中Tomcat的部署上下文路径
- 打开Eclipse的
Servers视图,右键点击你的Tomcat服务器,选择Add and Remove... - 在弹出的窗口中选中你的
spring-mvc-app1项目,点击右侧的Edit按钮 - 在编辑界面的
Context path输入框中,清空内容(或者填入/),点击Finish - 重启Tomcat服务器,此时访问路径就会变成
localhost:9090/hello
方法2:通过Maven配置修改最终打包名称(适用于Maven项目)
如果你的项目是Maven管理的,可以在pom.xml中添加以下配置:
<build> <finalName>ROOT</finalName> </build>
Tomcat默认会将名为ROOT.war的项目部署为根上下文(即上下文路径为空),这样无论是在Eclipse中运行还是打包部署,都不会出现项目名前缀。
验证配置
你的Spring MVC相关配置(SpringConfig和SpringMvcDispatcherServletInitializer)都是正确的:
@ComponentScan正确扫描了项目包DispatcherServlet映射到了根路径/- 视图解析器配置也正常
所以核心问题就是Tomcat的上下文路径设置,调整后就能达到你期望的访问路径。
内容的提问来源于stack exchange,提问作者JohnEdwards-8
相关产品推荐
相关产品推荐

