一.开发中遇到的问题
在一个jsp页面中,一个jsp页面中ajax请求中url是这样写的
很明显我是想要向controller中发送请求,我的controller中的RequestMapping是这写的
我之前发送ajax请求中的url都是写成/system/login这样,但是这里我不太清楚为什么直接写成login可以访问,但是写成/system/login却不能访问
二.问题分析
在查看浏览器检查中,发现没有改动url即写成’login’时,是可以正确访问的到的。
当我改为/system/login时,无法找到正确路径
看这里可以看到这个路径把项目名丢了,于是想到是相对路径和绝对路径的问题
三.ajax请求中url中的相对路径和绝对路径
-
绝对路径
即包含完全请求路径,即请求头,主机地址,端口,项目名等都有,在这个例子中,绝对路径为http://localhost:8080/HotelSSM/system/login -
相对路径
url中的相对路径分为两种:- 有’/‘符号,在这个例子中,/system/login即为这一种,开头的’/'是指根路径,其相对的是服务器的根路径,即为http://localhost:8080。所以当我填写为/system/login时,访问的路径会变为http://localhost:8080/system/login
- 无’/'符号,在这个例子中,'login’即为这一种,其相对的是我这个jsp页面的地址,我这个jsp页面的地址为http://localhost:8080/HotelSSM/system/login,当我发送ajax请求中,因为其没有经过视图解析器,又因为相对路径的作用,所以会找controller中的system/login的post方法,所以会正确访问到这个方法。
- 有’/‘符号,在这个例子中,/system/login即为这一种,开头的’/'是指根路径,其相对的是服务器的根路径,即为http://localhost:8080。所以当我填写为/system/login时,访问的路径会变为http://localhost:8080/system/login