前后端交互中的绝对路径和相对路径
前端
<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.html
或http://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
),则:- 访问 URL 为
http://域名:端口/应用上下文/hello
(例如http://localhost:8080/test/hello
)。 - 映射规则:Servlet 路径是 相对于应用上下文的根(即
/test
是应用上下文,Servlet 路径/hello
直接跟在后面,形成/test/hello
)。
- 访问 URL 为
-
为什么必须加斜杠?
Servlet 规范规定,映射路径 必须以斜杠开头(表示从应用上下文的根开始),否则编译器会报错(如@WebServlet("hello")
是非法的,无法启动 Tomcat)。这是后端代码的 语法强制要求,和前端路径的解析逻辑不同。
相关文章:
前后端交互中的绝对路径和相对路径
前端 <form action"hello" method"post"> 1. 不加斜杠 (相对路径,如 action"hello") 解析规则:基于当前页面的 URL 路径部分 进行拼接。 假设当前页面 URL 是 http://域名:端口/应用上下文…...
从零开始学习three.js(18):一文详解three.js中的着色器Shader
在WebGL和Three.js的3D图形渲染中,着色器(Shader) 是实现复杂视觉效果的核心工具。通过编写自定义的着色器代码,开发者可以直接操作GPU,实现从基础颜色渲染到动态光照、粒子效果等高级图形技术。本文将深入解析Three.j…...

调用百度云API机器翻译
新建Python文件,叫 text_translator.py 输入 import requests import jsonAPI_KEY "glYiYVF2dSc7EQ8n78VDRCpa" # 替换为自己的API Key SECRET_KEY "kUlhze8OQZ7xbVRp" # 替换为自己的Secret Keydef main():# 选择翻译方向while True:di…...
大模型训练计算显存占用
在大模型训练过程中,GPU显存中需要存储多种类型的数据,这些数据的合理管理直接影响训练效率和模型规模。需要放入GPU的关键数据类型如下: 注意: 在计算大模型训练占用的显存时,一般只计算 模型参数、梯度、优化器 的显…...

uni-app学习笔记六-vue3响应式基础
一.使用ref定义响应式变量 在组合式 API 中,推荐使用 ref() 函数来声明响应式状态,ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回 示例代码: <template> <view>{{ num1 }}</view><vi…...
亚远景-ASPICE与ISO 21434在汽车电子系统开发中的应用案例
在汽车电子系统开发中,ASPICE(Automotive Software Process Improvement and Capacity Determination)与ISO 21434(Road vehicles — Cybersecurity engineering)是两个关键标准,分别从软件开发流程和网络安…...

『已解决』Python virtualenv_ error_ unrecognized arguments_--wheel-bundle
📣读完这篇文章里你能收获到 🐍 了解 virtualenv 参数错误的原因及解决方案📦 学习如何正确配置 Python 虚拟环境文章目录 前言一、问题描述1.1 错误现象1.2 影响范围二、问题分析2.1 根本原因三、解决方案3.1 兼容处理3.2 完整解决方案四、总结前言 本文详细介绍了在 D…...
详细介绍一下Python连接MySQL数据库的完整步骤
以下是 Python 连接 MySQL 数据库的完整步骤,包含环境准备、连接建立、数据操作、错误处理和性能优化等内容: 一、环境准备 安装 MySQL 服务器 Windows/macOS:下载安装包 MySQL Installer Linux: bash Ubuntu/Debian sudo apt-…...

【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、InputSystem配置二、GameInput 游戏输入脚本1.实现思路2.完整代码三、Player 游戏人物移动脚本1.实现思路2.完整代码四、场景脚本设置1.组件设置五、问题解决1.人物一直下落2.人物跳跃时,…...

单片机-STM32部分:13-1、编码器
飞书文档https://x509p6c8to.feishu.cn/wiki/BpEywhaX9iqbiLkdqdAcmDnwnab EC旋转编码器 在产品开发过程中,需要位置闭环的的产品,类似电机类产品来说,编码器至关重要,它不仅可以使我们对带年纪进行精确的速度闭环,位…...
机器学习第十二讲:特征选择 → 选最重要的考试科目做录取判断
机器学习第十二讲:特征选择 → 选最重要的考试科目做录取判断 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 一、学…...

关于我在使用stream().toList()遇到的问题
关于我在使用stream().toList()遇到的问题 问题描述 在测试以上程序的时候抛出了空指针异常 于是我以为是我数据库中存在null字段,但查看后发现并不存在为null的数据 问题排查 起初我以为问题出现在sort排序方法这,事实也确实是,当我把s…...
javascript 编程基础(2)javascript与Node.js
文章目录 一、Node.js 与 JavaScript1、基本概念1.1、JavaScript:动态脚本语言1.2、Node.js:JavaScript 运行时环境 2、核心区别3、执行环境差异3.1、浏览器中的JavaScript3.2、Node.js中的JavaScript 4、共同点5、为什么需要Node.js? 一、No…...
Spring Boot 集成 druid,实现 SQL 监控
文章目录 背景Druid 简介监控统计 StateFilter其它 Filter详细步骤第 1 步:添加依赖第 2 步:添加数据源配置【通用部分】第 3 步:添加监控配置【关键部分】第 3 步:访问 druid 页面参考背景 😂 在 Code Review 过程中发现,经常有开发会忘记给表加索引。这就导致,生产运…...

多卡跑ollama run deepseek-r1
# 设置环境变量并启动模型 export CUDA_VISIBLE_DEVICES0,1,2,3 export OLLAMA_SCHED_SPREAD1 # 启用多卡负载均衡 ollama run deepseek-r1:32b 若 deepseek-r1:32b 的显存需求未超过单卡容量(如单卡 24GB),Ollama 不会自动启用多卡 在run…...
HTML向四周扩散背景
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>扩散背景效果</title><style>body {…...

基于Java在高德地图面查询检索中使用WGS84坐标的一种方法-以某商场的POI数据检索为例
前言 随着移动互联网的飞速发展,基于位置的服务(LBS)需求日益增长,越来越多的应用需要从地图中检索特定区域内的地理信息,例如商业场所、公共服务设施等。商场作为城市商业活动的重要载体,其周边的地理信息…...
使用 Terraform 创建 Azure Databricks
使用 Terraform 创建 Azure Databricks Terraform 是一种基础设施即代码(IaC)工具,允许用户通过声明式配置文件来管理和部署云资源。Azure Databricks 是一个基于 Apache Spark 的分析平台,专为数据工程和数据科学设计。通过 Terraform,可以自动化 Azure Databricks 的创…...

本地部署dify+ragflow+deepseek ,结合小模型实现故障预测,并结合本地知识库和大模型给出维修建议
1.准备工作 使用ollama 拉取deepseek-r1:7b 官网下载ollama ollama run deepseek-r1:7b ollama list Ragflow专注于构建基于检索增强生成(RAG)的工作流,强调模块化和轻量化,适合处理复杂文档格式和需要高精度检索的场景。Dify…...

SECERN AI提出3D生成方法SVAD!单张图像合成超逼真3D Avatar!
SECERN AI提出的3D生成方法SVAD通过视频扩散生成合成训练数据,利用身份保留和图像恢复模块对其进行增强,并利用这些经过优化的数据来训练3DGS虚拟形象。SVAD在新的姿态和视角下保持身份一致性和精细细节方面优于现有最先进(SOTA)的…...
深入探索:Core Web Vitals 进阶优化与新兴指标
一、INP(Interaction to Next Paint)深度解析 INP 与 FID 的核心差异 • 响应范围:FID仅测量首次输入延迟,而INP跟踪页面生命周期中所有关键交互 • 测量维度:INP综合考虑输入延迟、处理时间和下一帧渲染时间 • 评…...
c/c++的opencv开闭操作
OpenCV 中的形态学开运算与闭运算 (C) 在计算机视觉和图像处理领域,形态学操作是用于分析和处理图像形状的一系列非线性操作。OpenCV 作为一个强大的开源计算机视觉库,提供了丰富的形态学转换函数。其中,“开运算”(Opening&…...

【物联网】 ubantu20.04 搭建L2TP服务器
部署篇 序言 为了是两个客户端在同一个网络内,需要找一台服务器,搭建一个L2TP服务器,通过L2TP使两个客户端在同一个网络内,为什么要搭建,主要是解决例如员工出差后,还需要连接公司内网资源的问题,本文主要…...
winrar 工具测试 下载 与安装
https://zhuanlan.zhihu.com/p/680852417 https://www.angusj.com/resourcehacker/#download 点击String Table,在展开列表中找到80:2052展开,删除1277行。点击右上方编译按钮,并保存。...
PLC组网的方法、要点及实施全解析
一、PLC组网方法 1.1 基于以太网的组网 - 适用场景:适用于数据传输量大、通信距离长、对实时性要求相对不苛刻的场景,如大型工厂的车间级数据交互、跨区域设备协同控制 。 - 实现方式:利用工业以太网交换机,将支持以太网接口的…...
网络安全深度解析:21种常见网站漏洞及防御指南
一、高危漏洞TOP 10 1. SQL注入(SQLi) 原理:通过构造恶意SQL语句突破系统过滤机制 典型场景: - 联合查询注入: union select 1,version(),3--+ - 布尔盲注:and (select substr(user(),1,1)=r) - 时间盲注:;if(now()=sysdate(),sleep(5),0)/ 防御方案: - 严格参数化查…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)
1.问题描述: 通过CardRecognition识别身份证拍照拿到的照片地址,使用该方法获取不到图片文件,请问如何解决? 解决方案: //卡证识别实现页,文件名为CardDemoPage,需被引入至入口页 import { …...
Java大厂面试实战:Spring Boot与微服务场景中的技术点解析
Java大厂面试实战:Spring Boot与微服务场景中的技术点解析 第一轮:基础技术了解 面试官:谢飞机,你好。从简历上看,你熟悉Spring Boot,那我们来聊聊它的核心功能吧。Spring Boot有哪些主要的特性ÿ…...

从零启动 Elasticsearch
elastic 有弹力的 ElaticSearch (ES)是一个基于 Lucene 的分布式全文检索引擎。可以做到近乎实时地存储、检索数据,并且本身具有良好的扩展性,可以扩展到上百台服务器,处理PB级别(1 Petabyte 1024TB&…...
比较两个用于手写体识别的卷积神经网络(CNN)模型
要比较两个用于手写体识别的卷积神经网络(CNN)模型,可以从以下 6个核心维度 进行系统性评估,并直接给出对比结论: 一、基础性能对比(核心指标) 准确率 直接比较两个模型在 相同测试集 上的分类准确率(如MNIST测试集的错误率是否低于0.5%)若准确率接近…...