url和uri区别

url和uri区别这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等。但是,每次定义的时候,心里都很纠结,是该用imgUrl还是imgUri呢?

同样的,另外一个问题:String HttpServletRequest.getRequestURI();和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同?为什么会如此?

带着这些问题到网上去搜了下,没发现让自己看了明白的解释,于是,想到了Java类库里有两个对应的类java.net.URI和java.net.URL,终于,在这两个类里的javadoc里找到了答案。

URIs, URLs, and URNs
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。

在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,schema必须被指定。

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

上一篇:2020Android高级开发面试题以及答案整理,持续更新中~,android开发技术基础


下一篇:python3 urlencode 和 urldecode 使用