当我在跳转路径时,出现了问题。
跳转的链接并没有被controller层的@RequestMapping("/xxx")对应的方法处理,并且跳转后报404的界面的路径并没有包含根路径,http://localhost:8080/index像这样,本应出现的路径应该是这样http://localhost:8080/项目根路径/index。检查了web.xml,springmvc.xml配置文件均未有问题,由于是maven项目我又做了一系列依赖重新导入的操作,确认了jar包的导入。
原本我跳转的链接是这样写的<a href="/index">index</a>
但当我去掉了 / 时,却又能正常被controller处理,但由于是相对路径不太好,就改成了
<a href="${pageContext.request.contextPath}/index">index</a>
被折磨的好几个小时,解决了也我确定了以后的书写规范,如果有人能解答我的疑问十分感谢:为什么/index的方式对应的根路径不是项目路径。
就这样。
我来自问自答了,刚查阅了资料
首先要知道什么是前台路径,什么是后台路径。
所谓前台路径,就是能被浏览器解析标签下的路径。这种前台路径的绝对路径的根不是项目路径,而是服务器的root路径,简而言之就是这样http://localhost:8080/这样的,如果想访问到当前项目还需要配置上下文路径的前缀,也就是前面我提到的这种方式:
<a href="${pageContext.request.contextPath}/index">index</a>。
那后台路径也应该能想到,不能被浏览器解析的标签下的路径,也可以理解为能被服务器解析的标签下的路径。这种后台路径的绝对路径的根路径是当前项目路径,比如
<jsp:forward page="/index"></jsp:forward>
这样也是能正常访问的。
顺嘴提一句,上下文路径并不一定是项目路径,可以修改
总结:
如果是前台路径:${pageContext.request.contextPath}/xxx
如果是后台路径:/xxx