- 前言:昨天搭建完了spring mvc项目的框架,但是发现自己访问页面始终访问不了,经过仔细看代码发现: 在路径跳转的时候我在路径的前面多加了一个/斜杠,这样导致请求的路径发生了错误,下面就来给大家分享一下关于路径前斜杠的问题
一、关于请求路径:
一个正确的请求路径才可以访问到服务器的资源,请求路径由资源路径和资源名称组成
例如: http://localhost:8080/springmvc/test/hello
其中 http://localhost:8080/springmvc/test为资源路径 hello为资源名称
二、请求路径分类:
请求路径分为前端路径和后端路径,在jsp页面中的路径都是前端路径,如果在.xml 中的路径可以说是后端路径,这次主要介绍前端路径 ,前端路径也会再次分为两种: 相对路径和绝对路径。
三、请求路径分为相对路径和绝对路径:
比如: http://localhost:8080/springmvc/test/hello 就是一个绝对路径(完整路径),能够准确的定位一个资源
比如:/test/hello 或者 test/hello 为相对路径,他们会依赖一个其他路径最为参考路径
你仔细看的话会发现: 同样是相对路径为什么前面是否有斜杠(/),这是本篇博客主要分享的内容,
- 如果路径解析在前台,根路径为http://localhost:8080/
- 如果路径解析在后台,根路径为http://localhost:8080/项目名/
看一个例子:
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>入门程序</h3>
<!--
当前路径是前面没有斜杠的相对路径,参照的路径就是当前页面的路径:
参照的路径是http://localhost:8008/项目名/requestMapping
http://localhost:8008/test/requestMapping
-->
<a href="requestMapping">前面没有斜杠</a>
<!--当前路径是一个有斜杠的相对路径,参照路径就是当前的web服务器的根路径:http://localhost:8008/
点击链接之后提交的URL绝对地址是: http://localhost:8008/requestMapping
-->
<a href="/requestMapping">前面有斜杠</a>
</body>
</html>
控制器:
*/
@Controller
public class HelloController {
@RequestMapping(path="/requestMapping")
public String testRequestmapping(){
System.out.println("hello spring mvc");
return "success";
}
}
初始页面:
当我们点击第一个超链接,也就是前端的相对路径前没有斜杠:
地址栏中的URL变为了:
前面的绿色部分就是相对路径的参考路径(即 http://localhost:8008/test/haha/),也就是我们点击链接之前的路径 .
当我们点击前面有斜杠的链接时:
URL变成了:
我们可以发现相对路径的参考路径变成了根目录(即 http://localhost:8008/)