Spring MVC 路径前加斜杠(/)和不加斜杠的区别?

  • 前言:昨天搭建完了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/)

 

总结:前端路径的相对路径前面不加斜杠的参考路径就是当前访问的路径

           前端路径的相对路径前面加斜杠的参考路径是根路径

  • 17
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值