springmvc中“/”和前端中“/”的代表含义

今天做毕业设计遇到了springmvc中“/”和前端中“/”代表含义的问题,折磨了我挺久的,网上找到这两篇博客不错:

https://www.cnblogs.com/hi3254014978/p/11610997.html

https://blog.csdn.net/qq_41581154/article/details/102551206

但是吧 里面也有些验证之后发现不对的,这里我做个总结

servlet中重定向或请求转发路径以及html中href或src网址如果用“/”开头,代表当前项目下的路径.
浏览器转发这条路径时会自动加上当前项目的路径前缀,如果这个路径不是以“/”开头,那么代表这个路径和当前文件路径
前缀是同一个(即该文件的url地址,注意但是并非该文件在项目中的物理地址),浏览器访问该网址时会自动加上当前文件的路径前缀。

这里注意下 我还看到网上还有其他版本的:就是如果以“/”开头的重定向代表当前服务器的路径。
我也疑惑了好久,两种说法,所以自己验证过了,第一个是对的:
在servlet端不管是重定向还是转发,只要带上“/”都代表当前项目路径


我自己遇到的问题是servlet转发跳转到前端页面的时候,该页面有这么一个引用:asserts/css/bootstrap.min.cssspringmvc中“/”和前端中“/”的代表含义_第1张图片
后端跳转代码如下:有两种方式跳转
springmvc中“/”和前端中“/”的代表含义_第2张图片
出现的问题:
第一种方式的跳转可以加载样式,而第二种的无法加载样式
报错如下:
springmvc中“/”和前端中“/”的代表含义_第3张图片
正确路径应为:
http://localhost:8451/crud/asserts/css/bootstrap.min.css

照理来说没有“/” 代表这个路径和当前所在html的路径前缀是同一个:
http://localhost:8451/crud/

第二种情况显然并没有如我所愿,原因在于:
此时toadd.html页面路径前缀并不是 http://localhost:8451/crud/
而是http://localhost:8451/crud/emp/,因为这个页面由是servlet转发后跳转的,即浏览器地址为servlet地址,而非toadd.html在项目结构中的位置。

所以此时没有“/” toadd.html的路径为http://localhost:8451/crud/emp/3,

它的路径前缀为http://localhost:8451/crud/emp/

而第一种情况它的路径为http://localhost:8451/crud/emp/
所以前缀即为http://localhost:8451/crud/

那么相对路径是没办法统一的,因为两不同请求方式的路径不同,所以这里采用绝对路径解决问题:
springmvc中“/”和前端中“/”的代表含义_第4张图片

你可能感兴趣的:(普通知识)