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

前端

复制代码
 <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)。这是后端代码的 语法强制要求,和前端路径的解析逻辑不同。

相关推荐
2301_8012522213 小时前
Tomcat的基本使用作用
java·tomcat
你想考研啊1 天前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
cici158742 天前
MyBatis注解的运用于条件搜索实践
java·tomcat·mybatis
STUPID MAN2 天前
Linux使用tomcat发布vue打包的dist或html
linux·vue.js·tomcat·html
Kent_J_Truman3 天前
JDK Maven Tomcat Spring在VSCode中的部分配置细节(自用)
java·tomcat·maven
心随雨下3 天前
Tomcat日志配置与优化指南
java·服务器·tomcat
心随雨下4 天前
Java中将System.out内容写入Tomcat日志
java·开发语言·tomcat
刘一说5 天前
深入解析 Spring Boot 数据访问:Spring Data JPA 与 MyBatis 集成实战
spring boot·tomcat·mybatis
NON-JUDGMENTAL5 天前
Tomcat 新手避坑指南:环境配置 + 启动问题 + 乱码解决全流程
java·tomcat
悟能不能悟6 天前
idea运行tomcat的日志文件放到哪里了
java·tomcat·intellij-idea