当前位置: 首页 > news >正文

【Java】URL(Uniform Resource Locator)

URL

  • URL 的通用结构
  • 数据库连接中的 URL
  • 搜索引擎的复杂查询
  • URL 编码
    • 为什么需要编码?
    • 编码规则对照表
    • 查询字符串关键参数
  • URL 解析过程

URL 的通用结构

URL 是协议驱动的资源定位符。URL 的标准格式如下:

<协议>://<主机>:<端口>/<路径>?<查询字符串>

示例

解析

作用

特性

格式

URL 通用结构

协议
Scheme

主机
域名/IP

端口
Port

路径
Path

查询字符串
Query String

https / jdbc:mysql / ftp

通过 DNS 与 IP 互相转换

区分同一主机上的不同程序

带有层次结构,精准定位资源

键值对格式:key1=val1&key2=val2

数据库连接中的 URL

很多后端开发者第一次意识到 URL 的普适性,是通过 JDBC 的连接字符串:

jdbc:mysql://127.0.0.1:3306/javacode?characterEncoding=utf8&useSSL=false

这个字符串完美契合了 URL 的通用结构:

组成部分解析值技术含义
协议jdbc:mysql告诉程序使用 JDBC 桥接驱动,并指明子协议是 MySQL
主机127.0.0.1数据库所在服务器地址(本机回环地址)
端口3306MySQL 服务的默认监听端口
路径/javacode定位到名为javacode的数据库实例
查询字符串characterEncoding=utf8&useSSL=false附带连接参数:强制 UTF-8 编码,并禁用 SSL 连接

搜索引擎的复杂查询

以在 Google 搜索java时生成的 URL 为例:

https://www.google.com/search?q=java&sca_esv=31f75f21cab977db&hl=zh_CN&sxsrf=...&source=hp&ei=...
组成部分解析值技术含义
协议https采用 SSL/TLS 加密的 HTTP 协议,保证数据传输安全
主机www.google.comGoogle 搜索服务的域名,通过 DNS 解析为真实 IP 地址
端口未显式显示(默认443HTTPS 的标准端口,浏览器会自动补全并连接该端口
路径/search指向 Google 服务器上处理搜索请求的入口点(类似 Servlet/Controller 的映射路径)
查询字符串q=java&sca_esv=...&hl=zh_CN&...键值对集合,包含用户搜索词(q=java)、界面语言(hl=zh_CN)、会话追踪 ID 等十余个参数,各参数之间用&分隔

补充说明hl=zh_CN这个参数告诉 Google 服务器,用户偏好中文(中国大陆)界面的搜索结果,这是通过查询字符串灵活控制资源表现的典型例子。

URL 编码

为什么需要编码?

URL 中允许使用的字符是有限的(如字母、数字、-_.~等)。如果参数值里包含了保留字符(如:/?&=等)或非 ASCII 字符(如中文),就必须进行转换,否则会破坏 URL 的结构。这就产生了URL 编码,也叫百分号编码。规则是:

  • 对于非 ASCII 字符(如汉字),先用 UTF-8 编码得到字节序列,再把每个字节转为%加上两位十六进制数。
  • 对于 ASCII 中的保留字符,同样用%加十六进制替代。

服务器对 URL 的处理全流程:

服务端处理

用户在浏览器输入
或用程序构建URL

包含特殊字符
或非ASCII字符?

进行URL编码
采用UTF-8字符集为主

直接发送请求

服务器接收请求

按 & 分割查询字符串

对 key=value 部分
进行 URL 解码

得到原始参数
传递到业务逻辑

整个流转过程,编码与解码必须匹配。常见的问题是双端编解码不一致(如客户端用 GBK 对中文编码,服务器用 UTF-8 解码),导致中文乱码

编码规则对照表

字符用途URL 中直接出现?编码结果
q普通字母✅ 可以q
&分隔多个参数❌ 会被误解析%26
=分隔键和值❌ 会被误解析%3D
空格空格❌ 可能中断链接%20+
中文❌ 非 ASCII%E4%B8%AD
/路径分隔符❌ 在查询值中需转义%2F

查询字符串关键参数

参数含义
qjava核心查询词。所有复杂参数中,只有q是你的搜索意图。
hlzh_CN界面语言偏好,这里是简体中文。
sourcehp流量来源标识,hp代表首页。Google 用它统计用户行为。
oqjava在搜索框中输入的原始关键词。
sclientgws-wiz内部客户端类型标识。

其余参数(sca_esv,ei,ved等)主要用于安全校验、会话跟踪、广告归因等技术目的,普通用户无需关注。

URL 解析过程

一次完整的 URL 解析,其实就是:

  1. 确认使用什么协议找到资源的传送方式。
  2. 通过 DNS 将域名解析成 IP,找到网络中唯一的主机。
  3. 通过端口号,在这台主机上锁定具体服务程序。
  4. 通过路径,让服务程序知道你要访问哪类资源。
  5. 通过查询字符串,告诉服务程序关于这个资源的具体要求。
  6. 在这个过程中,整个 URL 只能使用 ASCII 和安全字符,其余字符必须通过百分号编码“伪装”成符合规范的形式。
http://www.jsqmd.com/news/792410/

相关文章:

  • Mac上Gradle报错‘Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7’?三步搞定版本兼容问题
  • AI工具搭建自动化视频生成敏感词过滤
  • 企业酝酿数智化内驱力
  • 2026年OpenClaw新手小白部署图文教程
  • 2026全年度靠谱苏州发电机租赁公司5月最新排行:top3实测口碑对比(昆山/太仓/常熟/张家港/吴江/无锡/江阴/南通)附出租FAQ避坑指南 - 奋斗者888
  • 3分钟解锁网易云NCM加密文件:终极转换工具使用指南
  • LinkSwift:重新定义网盘文件直链获取的技术方案
  • Maven项目实战:手动部署Oracle JDBC驱动的本地仓库配置指南
  • 深度解析开源工具:八大网盘直链获取实战指南
  • C++学习(26_05_10)
  • FramePack:基于恒定长度上下文压缩的下一代视频扩散架构
  • 别再只会调速度了!深入理解STM32控制L298N驱动直流电机的H桥原理与实战
  • 2026年OpenClaw怎么部署、配置Token Plan及大模型Skill教程
  • 轻量级注意力新范式:ECA-Net如何用一维卷积重塑通道交互
  • 2026年集成Hermes Agent/OpenClaw配置Token Plan自动化教程
  • 为OpenClaw智能体工作流下载配置并接入Taotoken模型服务
  • 从传感器文档到实际代码:手把手解析Modbus RTU协议在STM32上的移植与应用
  • DBeaver驱动管理进阶:从手动维护到自动化脚本的优雅实践
  • 从零到一:我的循迹小车避坑指南与实战心得
  • RecursiveCharacterTextSplitter 核心参数深度指南:chunk_size 与 chunk_overlap 原理、实战、调优全解
  • 2025最权威的五大降AI率方案推荐榜单
  • 互联网大厂 Java 求职者的面试:Spring Boot 的核心与微服务应用
  • AI加速器验证:FIREBRIDGE架构与协同验证实践
  • 三菱FX2N-485-BD通讯板配置全攻略:从硬件接线到GX Developer设置,实现稳定远程通讯
  • 2025最权威的十大AI学术工具实际效果
  • 【奇点智能技术大会住宿指南】:2024官方认证周边酒店TOP8+3家隐藏版静音神店
  • Go语言服务网格egress:外部服务访问
  • 终极方案:BlueArchive自动脚本Mumu模拟器检测问题深度解析与高效解决指南
  • 5分钟解放双手:淘宝淘金币自动化脚本终极指南
  • 2026年安装Hermes Agent/OpenClaw百炼Token Plan一分钟配置