SpringMVC请求路径问题及解决(路径前面加不加/的问题)

 更新时间:2025年10月17日 09:02:36   作者:青春~要拼搏  
文章讲解了Web开发中请求路径的构成和绝对路径、相对路径的区别,重点分析了相对路径是否带斜杠(/)对资源定位的影响,并结合前后台路径解析进行说明,最后建议按规范使用带斜杠的路径

一、请求路径

一个正确的请求路径应该是由资源路径+资源名称组成

http://localhost:8080/sk_war_exploded/login.do为绝对路径

http://localhost:8080/sk_war_exploded为资源路径 

login.do为资源名称 

相对路径:

/login.do就是一个相对路径,相对路径会依赖于一个其他路径作为参照路径,与这个参照路径组合去定位一个资源,绝对路径 =参照路径+相对路径

二、相对路径前是否加上斜杠(/),会产生不同的效果

2.1、路径解析在前台

根路径为http://localhost:8080/ (服务器的根路径)

1、开头不带斜杠的相对路径

<a href="login.do" rel="external nofollow"  th:if="${userInformation.username}==null" id="user_name_a" th:value="wsk">登录</a> 

相对路径不带斜杠时,这个路径为当前资源路径的一个子路径 

此时的访问地址即:

http://localhost:8080/sk_war_exploded/login.do,此时可以正确访问

2、开头带斜杠的相对路径 

<a href="/login.do" rel="external nofollow"   th:if="${userInformation.username}==null">注册</a>

相对路径带斜杠时,这个路径表示该路径为根路径的一个子路径

此时的访问地址即:

http://localhost:8080/login.do解析地址失败

2.2、路径解析在后台

根路径为http://localhost:8080/sk_war_exploded/

1、开头不带斜杠的相对路径

    //@RequestMapping带上/是绝对路径,加斜杠就是找跟路径下的,不带是相对(规范应该带)
    @RequestMapping(value = "login.do", method = RequestMethod.GET)
    public String login(HttpServletRequest request, Model model) {
 
    }

相对路径不带斜杠时,这个表示该路径为当前资源路径的一个子路径

此时的访问地址即:

http://localhost:8080/sk_war_exploded/login.do,此时可以正确访问

 2、开头带斜杠的相对路径

   //@RequestMapping带上/是绝对路径,加斜杠就是找跟路径下的,不带是相对(规范应该带)
    @RequestMapping(value = "/login.do", method = RequestMethod.GET)
    public String login(HttpServletRequest request, Model model) {

 }

相对路径带斜杠时,开头路径表示该路径为根路径的一个子路径

此时的访问地址即:

http://localhost:8080/sk_war_exploded/login.do,此时可以正确访问

原因:

由于后台解析路径的时候,根路径为http://localhost:8080/sk_war_exploded/,

1、当我们不加斜杠的时候,就是以相对路径解析,但是因为我们的根路径就是http://localhost:8080/sk_war_exploded/,最终定位还是回到http://localhost:8080/sk_war_exploded/login.do,

2、加斜杠时,以绝对路径进行解析,但是由于根路径和当前资源路径都定位到http://localhost:8080/sk_war_exploded/,所以最终定位还是回到http://localhost:8080/sk_war_exploded/login.do,但是,规范规定应该加斜杠(/)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring BeanFactory容器的构建和使用示例详解

    Spring BeanFactory容器的构建和使用示例详解

    BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制,下面小编就来和大家简单聊聊BeanFactory容器的构建和使用示例吧
    2023-07-07
  • mybatis-plus实现打印完整sql语句

    mybatis-plus实现打印完整sql语句

    这篇文章主要介绍了mybatis-plus实现打印完整sql语句方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Spring的异常重试框架Spring Retry简单配置操作

    Spring的异常重试框架Spring Retry简单配置操作

    这篇文章主要介绍了Spring的异常重试框架Spring Retry简单配置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java编程实现对象克隆(复制)代码详解

    Java编程实现对象克隆(复制)代码详解

    这篇文章主要介绍了Java编程实现对象克隆(复制)代码详解,涉及了克隆的原因,如何实现克隆,克隆的一般步骤,深克隆与浅克隆的介绍等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • Spring中的@ControllerAdvice三种用法详解

    Spring中的@ControllerAdvice三种用法详解

    这篇文章主要介绍了Spring中的@ControllerAdvice三种用法详解,加了@ControllerAdvice的类为那些声明了(@ExceptionHandler、@InitBinder或@ModelAttribute注解修饰的)方法的类而提供的<BR>专业化的@Component,以供多个Controller类所共享,需要的朋友可以参考下
    2024-01-01
  • Java在Excel中创建透视表方法解析

    Java在Excel中创建透视表方法解析

    这篇文章主要介绍了Java在Excel中创建透视表方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java使用Apache Tika从PDF文件中提取文本

    Java使用Apache Tika从PDF文件中提取文本

    Apache Tika 是一个内容分析工具包,它能够从各种类型的文档中提取元数据和文本内容,下面我们就来看看如何使用Apache Tika从PDF文件中提取文本吧
    2025-04-04
  • SpringBoot视图解析实现原理深入分析

    SpringBoot视图解析实现原理深入分析

    视图解析其实就是SpringBoot某一个controller的方法执行完成之后,它是跳转到那个页面。由于我们springboot项目默认打包为jar包,是形成压缩包的形式,而jsp又不支持压缩,所以我们SpringBoot不知JSP的,需要引入第三方模板引擎才可以处理
    2022-10-10
  • springboot应用中使用过滤器的过程详解

    springboot应用中使用过滤器的过程详解

    过滤器通常用于实现跨切面的功能,例如身份验证、日志记录、请求和响应的修改、性能监控等,这篇文章主要介绍了springboot应用中使用过滤器,需要的朋友可以参考下
    2023-06-06
  • Java/Spring项目的包开头为什么是com详解

    Java/Spring项目的包开头为什么是com详解

    这篇文章主要介绍了Java/Spring项目的包开头为什么是com的相关资料,在Java中包命名遵循域名反转规则,即使用公司的域名反转作为包的前缀,以确保其全球唯一性和避免命名冲突,这种规则有助于逻辑分层、代码可读性提升和标识代码来源,需要的朋友可以参考下
    2024-10-10

最新评论