URI、URL、URIBuilder、UriBuilder、UriComponentsBuilder说明及基本使用

这篇具有很好参考价值的文章主要介绍了URI、URL、URIBuilder、UriBuilder、UriComponentsBuilder说明及基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前想过直接获取url通过拼接字符串的方式实现,但是这种只是暂时的,后续地址如果有变化或参数很多,去岂不是要拼接很长,由于这些等等原因,所以找了一些方法实现

java.net.URI

URI全称是Uniform Resource Identifier,也就是统一资源标识符,它是一种采用特定的语法标识一个资源的字符串表示。URI所标识的资源可能是服务器上的一个文件,也可能是一个邮件地址、图书、主机名等
URI是标识一个资源的字符串

URI的语法

URI的语法构成是:一个模式和一个模式特定部分。表示形式如下:

模式:模式特定部分
scheme:scheme specific part 

模式特定部分的表示形式取决于所使用的模式。URI当前的常用模式包括:

  1. data:链接中直接包含经过BASE64编码的数据。
  2. file:本地磁盘上的文件。
  3. ftp:FTP服务器。
  4. http:使用超文本传输协议。
  5. mailto:电子邮件的地址。
  6. magnet:可以通过对等网络(端对端P2P,如BitTorrent)下载的资源。
  7. telnet:基于Telnet的服务的连接。
  8. urn:统一资源名(Uniform Resource Name)。

URI中的模式特定部分没有固定的语法,不过,很多时候都是采用一种层次结构形式,如:

//授权机构/路径?查询参数

//authority/path?query

URI的模式的组成部分可以是小写字母数字加号点(.)连号(-)

典型的URI的其他三个部分:模式特定部分,也就是授权机构;路径;查询参数

  • 分别由ASCII字母组成(也就是字母A-Z、a-z和数字0-9),此外,还可以使用标点符号-、_、.、!和~,
  • 定界符(如/、?、&和=)有其预定义的用途。
  • 所有的其他字符,包括ASCII中拉丁字母,都需要使用百分号(%)转义,转义后的格式是:%+字符按照UTF-8编码再转成16进制的字符串表示。
  • 注意一点,如果前面提到的定界符没有作为定界符使用,也需要进行转义。
  • 举个简单的例子,如URI中存在中文字符"木",木字的UTF-8编码为0xE6 0x9C 0xA8,那么它在URI中应该转义为%E6%9C%A8。Jdk中的URLEncoder或者apache-codec中的相关类库提供URI(URL)编码的功能

URI中还可以携带用户的口令,因为会有安全漏洞,所以并不常见

构造URI实例



private URI() {
    }                           // Used internally

// 根据提供的一个uri字符串构造一个URI对象
public URI(String str) throws URISyntaxException {
   
   new Parser(str).parse(false);
}

//通过 模式、用户信息、服务器地址、端口、文件路径、查询条件、片段标识构造URI
public URI(String scheme,
          String userInfo, String host, int port,
          String path, String query, String fragment)
   throws URISyntaxException
{
   
   String s = toString(scheme, null,
                       null, userInfo, host, port,
                       path, query, fragment);
   checkPath(s, scheme, path);
   new Parser(s).parse(true);
}
// 通过 模式、授权机构、文件路径、查询条件、片段标识构造URI
public URI(String scheme,
          String authority,
          String path, String query, String fragment)
   throws URISyntaxException
{
   
   String s = toString(scheme, null,
                       authority, null, null, -1,
                       path, query, fragment);
   checkPath(s, scheme, path);
   new Parser(s).parse(false);
}

// 通过 模式、服务器地址、文件路径、片段标识构造URI。public URI(String scheme, String host, String path, String fragment)
        throws URISyntaxException
    {
   
        this(scheme, null, host, -1, path, null, fragment);
    }

//通过 模式、模式特定部分和片段标识创建URI。
public URI(String scheme, String ssp, String fragment)
   throws URISyntaxException
{
   
   new Parser(toString(scheme, ssp,
                       null, null, null, -1,
                       null, null, fragment))
       .parse(false);
}

/**
* Constructs a simple URI consisting of only a scheme and a pre-validated
* path. Provides a fast-path for some internal cases.
*/
URI(String scheme, String path) {
   
   assert validSchemeAndPath(scheme, path);
   this.scheme = scheme;
   this.path = path;
}

private static boolean validSchemeAndPath(String scheme, String path) {
   
   try {
   
       URI u = new URI(scheme + ":" + path);
       return scheme.equals(u.scheme) && path.equals(u.path);
   } catch (URISyntaxException e) {
   
       return false;
   }
}

//静态工厂方法,最终调用的是URI(String str)
public static URI create(String str) {
   
   try {
   
       return new URI(str);
   } catch (URISyntaxException x) {
   
       throw new IllegalArgumentException(x.getMessage(), x);
   }
}

这种获取实例的方法,直接查看源码便知道有哪些了

这里就说明一下一些参数的含义:文章来源地址https://www.toymoban.com/news/detail-672683.html

  1. scheme:协议
  2. auth

到了这里,关于URI、URL、URIBuilder、UriBuilder、UriComponentsBuilder说明及基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 泛型基本说明

    使用传统方法的问题分析 不能对加入到集合ArrayList中的数据类型进行约束(不安全) 遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响。 泛型的好处 编译时,检查添加元素的类型,提高了安全性 减少了类型转换的次数,提高效率 不在提示编译警告

    2023年04月18日
    浏览(34)
  • Eigen库的基本使用说明(二)

     之前的文章中,简单的介绍了一些基本的操作,回归之前的内容可以参考一下链接: zEigen库的基本使用说明_每日亿学的博客-CSDN博客_eigen库  本章内容主要就是继续延伸Eigen库的使用内容也会实时进行更新,Eigen库在SLAM中使用广泛,需要对这个库有一定的熟悉。 首先最简单

    2023年04月22日
    浏览(35)
  • ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 我们继续总结学习 Java基础知识 ,温故知新。 本文讲述 ScheduledThreadPoolExecutor 及 ThreadPoolExecutor。 我们并不推荐

    2024年02月15日
    浏览(33)
  • 云计算的基本概念术语说明和核心算法原理

    作者:禅与计算机程序设计艺术 云计算的基本概念是分布式处理、并行处理和网格计算的发展,是一种新兴的商业计算模型。它通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,使得企业数据中心的运行更与互联网相似。云计算的核心算法原理包括

    2024年02月14日
    浏览(47)
  • 电脑入门:路由器 基本设置操作说明

    路由器  基本设置操作说明 首先我们我设置路由器,就需要先登录路由器, 那么怎样登路由器啊? 登录路由器的方法是   在ie的地址栏输入:http://192.168.1.1  输入完成以后直接回车  那么如果你输入正确 这个时候就应该听到有用户名的提示  呵呵 这是怎么回事啊?  不要召

    2024年02月11日
    浏览(45)
  • Python中Thop库的基本介绍和参数说明

    关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) Hi,兄弟们,这里是肆十二,今天我们来讨论一下我们经常使用的Thop模块的常用模块和用途。 Thop介绍 THOP(Torch-OpCounter)是一个用于计算PyTorch模型操作数和计算量的工具。通

    2024年04月13日
    浏览(40)
  • HarmonyOS/OpenHarmony应用开发-ArkTS语言基本语法说明

    图1  示例效果图   本示例中,ArkTS的基本组成如下所示。 图2  ArkTS的基本组成     装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组

    2024年02月07日
    浏览(54)
  • Stable Diffusion WebUI文生图操作界面基本参数说明!

    朋友们,大家好,我是王赞,正在学习研究Stable Diffusion,致力于用最为朴素直白的语言为你介绍AI绘画的相关知识。 很多朋友在部署好Stable Diffusion后,本来想着可以愉快的玩耍了,但是点开一看,密密麻麻的选项立马又劝退了一大批人。 别着急,今天这篇教程将会为你解决

    2024年02月13日
    浏览(40)
  • 【人工智能】神经元数学模型的基本方程式及其意义详细说明

    神经元数学模型的基本方程式及其意义 在神经科学中,数学模型被广泛应用于理解神经元及其网络的激活、沟通和计算作用。本文将详细讨论一些典型神经元数学模型的基本方程式及其意义,以表达对神经网络实现认知和行为功能的认识。 一、Hodgkin-Huxley 模型

    2024年02月07日
    浏览(53)
  • 医学影像PACS系统源码: 三维重建基本后处理方法的介绍和说明

    多层面重建(MPR) 最大密度投影(MIP) 最小密度投影(MinIP) 表面阴影遮盖(SSD) 容积漫游技术(VRT) 曲面重建(CPR) 虚拟内镜技术(VE)   1、MPR MPR(Multi-Planar Reformatting),多平面重建,是将扫描范围内所有的轴位图像叠加起来再对某些标线标定的重组线所指定的组织进行

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包