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

前端

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

相关推荐
身如柳絮随风扬14 小时前
Tomcat 体系结构
java·tomcat
卓怡学长14 小时前
w1基于springboot高校学生评教系统
java·spring boot·tomcat·maven·intellij-idea
夕除1 天前
javaweb--02
java·tomcat
卓怡学长1 天前
m326数据结构课程网络学习平台的设计与实现+vue
java·spring·tomcat·maven·intellij-idea·mybatis
huanmieyaoseng10031 天前
Linux 安装配置 Tomcat超详细2026新(附安装包)
linux·运维·tomcat
橘子编程2 天前
Hermes Agent 完整知识总结与使用教程
java·人工智能·ai·tomcat·maven·ai编程
卓怡学长2 天前
基于 SpringBoot 的生活信息分享平台,从 0 到 1 完整实现(附源码 + 数据库)
java·数据库·spring boot·tomcat·maven
不吃香菜学java2 天前
Redis简单应用
数据库·spring boot·tomcat·maven
MaCa .BaKa2 天前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发
WJLSH1232 天前
TomCat
java·tomcat