前后端交互中的绝对路径和相对路径

前端

复制代码
 <form action="hello" method="post">

1. 不加斜杠

(相对路径,如 action="hello"

  • 解析规则 :基于当前页面的 URL 路径部分 进行拼接。

    假设当前页面 URL 是 http://域名:端口/应用上下文/xxx.html(例如 http://localhost:8080/test/page.html),则:

    • 浏览器会将 hello 拼接到 当前路径的最后一级目录后
    • 若当前路径是 /test/(比如页面是 /test/index.html,其路径部分为 /test/),则 action="hello" 解析为 http://域名:端口/test/hello
    • 若当前路径是 /test/sub/(页面是 /test/sub/page.html),则解析为 http://域名:端口/test/sub/hello
  • 特点继承当前页面的路径前缀 (包括应用上下文、子目录等),适用于 同应用内的路径跳转 (比如后端接口在应用上下文内,如 /test/hello)。

2. 加斜杠

(根路径,如 action="/hello"

  • 解析规则 :从 域名的根路径 开始拼接(忽略当前页面的路径前缀)。

    无论当前页面 URL 是什么(比如 http://localhost:8080/test/page.htmlhttp://localhost:8080/other/page.html),action="/hello" 都会解析为 http://域名:端口/hello(直接指向根路径下的 hello,与当前页面的路径无关)。

  • 特点强制从根开始 ,适用于 跨应用或根路径下的接口 (若后端接口确实在根路径,如 /hello,但实际开发中较少见,因为 Web 应用通常有上下文路径)。

举例对比

(假设应用上下文是 /test,当前页面是 /test/index.html):

  • 不加斜杠action="hello" → 解析为 http://localhost:8080/test/hello(带应用上下文,正确访问应用内的接口)。
  • 加斜杠action="/hello" → 解析为 http://localhost:8080/hello(不带应用上下文,若后端接口不在根路径,会 404 错误)。

总结:

  • 不加斜杠跟着当前页面的路径走(适合应用内的相对路径,自动带上应用上下文)。
  • 加斜杠直接从根开始(适合根路径下的绝对路径,与当前页面路径无关)。

后端

复制代码
@WebServlet("/hello")

后端 Servlet 路径

@WebServlet("/hello")

  • 路径含义

    该 Servlet 映射到 应用上下文内的 /hello 路径 。假设应用上下文是 /test(如之前配置的 Context path),则:

    • 访问 URLhttp://域名:端口/应用上下文/hello(例如 http://localhost:8080/test/hello)。
    • 映射规则 :Servlet 路径是 相对于应用上下文的根 (即 /test 是应用上下文,Servlet 路径 /hello 直接跟在后面,形成 /test/hello)。
  • 为什么必须加斜杠?

    Servlet 规范规定,映射路径 必须以斜杠开头 (表示从应用上下文的根开始),否则编译器会报错(如 @WebServlet("hello") 是非法的,无法启动 Tomcat)。这是后端代码的 语法强制要求,和前端路径的解析逻辑不同。

相关推荐
计算机毕设指导618 小时前
基于微信小程序的钓鱼论坛系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
ZePingPingZe21 小时前
SpringMVC与Servlet容器[Tomcat]
spring boot·servlet·tomcat
xiaolyuh12321 小时前
【XXL-JOB】执行器 Netty服务 & Tomcat 进程+资源共用详解
java·tomcat
BD_Marathon21 小时前
启动tomcat报错,80 端口已经被其他程序占用
java·tomcat
计算机毕设指导621 小时前
基于微信小程序的精致护肤购物系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
麦兜*2 天前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
二哈喇子!2 天前
JavaSE 与 JavaEE 知识点整合
java·servlet·tomcat
xiaoyustudiowww2 天前
fetch异步简单版本(Tomcat 9)
java·前端·tomcat
weixin_399380692 天前
TongWeb异常宕机问题分析
java·tomcat
天荒地老笑话么2 天前
IntelliJ IDEA 运行 Tomcat 报错:Please, configure Web Facet first!
java·前端·tomcat·intellij-idea