news 2026/5/10 23:36:55

【Java】URL(Uniform Resource Locator)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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 和安全字符,其余字符必须通过百分号编码“伪装”成符合规范的形式。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 23:35:21

3步解锁电脑隐藏性能:UXTU硬件调优实战指南

3步解锁电脑隐藏性能&#xff1a;UXTU硬件调优实战指南 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility 还在为游戏卡顿而烦恼吗…

作者头像 李华
网站建设 2026/5/10 23:32:59

LinkSwift:重新定义网盘文件直链获取的技术方案

LinkSwift&#xff1a;重新定义网盘文件直链获取的技术方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…

作者头像 李华
网站建设 2026/5/10 23:20:42

MySQL-BinLog是如何做到数据同步的

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程​​​​https://www.captainai.net/troubleshooter MySQL 的 BinLog&#xff08;Binary Log&#xff0c;二进制日志…

作者头像 李华
网站建设 2026/5/10 23:17:48

原生视频筑底 全域镜像共生

原生视频筑底 全域镜像共生副标题&#xff1a;突破传统仿真建模局限&#xff0c;开创实景化数字孪生落地应用新路径数字孪生技术历经多轮迭代&#xff0c;已然成为数字经济与实体经济深度融合的核心载体&#xff0c;而行业长期深陷传统仿真建模的路径困局&#xff0c;难以突破应…

作者头像 李华
网站建设 2026/5/10 23:16:50

艾尔登法环性能突破:隐藏的帧率限制与视野优化技术解密

艾尔登法环性能突破&#xff1a;隐藏的帧率限制与视野优化技术解密 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/El…

作者头像 李华