ajax请求中url写法的问题(相对路径和绝对路径)

一.开发中遇到的问题

在一个jsp页面中,一个jsp页面中ajax请求中url是这样写的
ajax请求中url写法的问题(相对路径和绝对路径)
很明显我是想要向controller中发送请求,我的controller中的RequestMapping是这写的
ajax请求中url写法的问题(相对路径和绝对路径)
ajax请求中url写法的问题(相对路径和绝对路径)
我之前发送ajax请求中的url都是写成/system/login这样,但是这里我不太清楚为什么直接写成login可以访问,但是写成/system/login却不能访问

二.问题分析

在查看浏览器检查中,发现没有改动url即写成’login’时,是可以正确访问的到的。ajax请求中url写法的问题(相对路径和绝对路径)
当我改为/system/login时,无法找到正确路径
ajax请求中url写法的问题(相对路径和绝对路径)
看这里可以看到这个路径把项目名丢了,于是想到是相对路径和绝对路径的问题

三.ajax请求中url中的相对路径和绝对路径

  1. 绝对路径
    即包含完全请求路径,即请求头,主机地址,端口,项目名等都有,在这个例子中,绝对路径为http://localhost:8080/HotelSSM/system/login

  2. 相对路径
    url中的相对路径分为两种:

    1. 有’/‘符号,在这个例子中,/system/login即为这一种,开头的’/'是指根路径,其相对的是服务器的根路径,即为http://localhost:8080。所以当我填写为/system/login时,访问的路径会变为http://localhost:8080/system/login
      ajax请求中url写法的问题(相对路径和绝对路径)
    2. 无’/'符号,在这个例子中,'login’即为这一种,其相对的是我这个jsp页面的地址,我这个jsp页面的地址为http://localhost:8080/HotelSSM/system/login,当我发送ajax请求中,因为其没有经过视图解析器,又因为相对路径的作用,所以会找controller中的system/login的post方法,所以会正确访问到这个方法。