`
yuanlei18
  • 浏览: 3541 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

URI、URL、URN的原理及JAVA的实现 (转载)

阅读更多
原帖地址http://hi.baidu.com/smicsoft/blog/item/3a72c9b45fb3cb778bd4b20f.html

URI:Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,URL,URN是URI的子集。
Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式:
URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。
URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。
URI是以某种统一的(标准化的)方式标识资源的简单字符串。
URI一般由三部分组成:
1. 访问资源的命名机制。
2. 存放资源的主机名。
3. 资源自身的名称,由路径表示。
典型情况下,这种字符串以scheme(命名URI的名字空间的标识符——一组相关的名称)开头,语法如下:
[scheme:] scheme-specific-part
URI以scheme和冒号开头。Scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与scheme-specific-part分开了,并且scheme-specific-part的语法和语义(意思)由URI的名字空间决定。如下面的例子:
http://www.cnn.com,其中http是scheme,//www.cnn.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。
URI有绝对和相对之分,绝对的URI指以scheme(后面跟着冒号)开头的URI。前面提到的http://www.cnn.com就是绝对的URI的一个例子,其它的例子还有mailto:jeff@javajeff.com、news:comp.lang.java.help和xyz://whatever。你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。如果使用文件系统作类比,绝对的URI类似于从根目录开始的某个文件的径。
与绝对的URI不同的,相对的URI不是以scheme(后面跟着冒号)开始的URI。 它的一个例子是articles/articles.html。你可以把相对的URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。如果用文件系统作类比,相对的URI类似于从当前目录开始的文件路径。

URL是Uniform Resource Location的缩写,译为"统一资源定位符"。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的格式由下列三部分组成:
第一部分是协议(或称为服务方式);
第二部分是存有该资源的主机IP地址(有时也包括端口号);
第三部分是主机资源的具体地址。,如目录和文件名等。
第一部分和第二部分之间用"://"符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。
目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即"通用资源标识"(参见RFC 1630)、URN(Uniform Resource Name)即"统一资源名"和URC(Uniform Resource Citation)即"统一资源引用符"等。
URI目前还处在进一步的研究当中。研究的方向就是弥补URL目前存在的缺点。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

JAVA中的URI,URL,URN
关键字: URL,URI,URN
URI、URL和URN是识别、定位和命名网上资源的标准途径。本文分析了URI、URL和URN的概念,以及Java的URI和URL类(以及与URL相关的类),并演示了如何在程序中使用这些类。

Internet被认为是全球的实际和抽象的资源的集合。实际的资源包括从文件(file)到人(person),抽象的资源包括数据库查询等。因为要通过多样的方式识别资源,所以需要标准的识别Internet资源的途径。为了满足这种需要,引入了URI、URL和URN。

URI、URL和URN的概念
URI
URI = Uniform Resource Identifier
There are two types of URIs: URLs and URNs.
See RFC 1630: Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the WWW.
URL
URL = Uniform Resource Locator
See RFC 1738: Uniform Resource Locators (URL)
URN
URN = Uniform Resource Name.

URI、URL和URN是彼此关联的。URI位于顶层,URL和URN的范畴位于底层。URL和URN都是URI的子范畴。

URI翻译为统一资源标识,它是以某种标准化的方式标识资源的字符串。这种字符串以scheme开头,语法如下:

[scheme:] scheme-specific-part

URI以scheme和冒号开头。冒号把scheme与scheme-specific-part分开,并且scheme-specific-part的语法由URI的scheme决定。例如http://www.cnn.com,其中http是scheme,//www.cnn.com是 scheme-specific-part。


URI分为绝对(absolute)或相对(relative)两类。绝对URI指以scheme(后面跟着冒号)开头的URI。前面提到的http://www.cnn.com就是绝对的URI的一个例子,其它的例子还有mailto:jeff@javajeff.com、news:comp.lang.java.help和xyz://whatever。可以把绝对URI看作是以某种方式引用某种资源,而对环境没有依赖。如果使用文件系统作类比,绝对URI类似于从根目录开始的某个文件的路径。相对URI不以scheme开始,一个例子是articles/articles.html。可以把相对URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。如果用文件系统作类比,相对URI类似于从当前目录开始的文件路径。

URI可以进一步分为不透明的(opaque)和分层(hierarchical)的两类。不透明的URI指scheme-specific-part不是以‘/’开头的绝对的URI。其例子有news:comp.lang.java和前面的mailto:jeff@javajeff.com。不透明的URI不能做进一步的解析,不需要验证scheme-specific-part的有效性。与它不同的是,分层的URI是以‘/’开头的绝对的URI或相对的URL。分层的URI的scheme-specific-part必须被分解为几个组成部分。分层的URI的scheme-specific-part必须符合下面的语法:

[//authority] [path] [?query] [#fragment]

可选的授权机构(authority)标识了该URI名字空间的命名机构。如果有这一部分则以‘//’开始。它可以是基于服务器或基于授权机构的。基于授权机构有特定的语法(本文没有讨论,因为很少使用它),而基于服务器的语法如下:

[userinfo@] host [:port]

基于服务器的authority以用户信息(例如用户名)开始,后面跟着一个@符号,紧接着是主机的名称,以及冒号和端口号。例如jeff@x.com:90就是一个基于服务器的authority,其中jeff为用户信息,x.com为主机,90为端口。

可选的path根据authority(如果提供了)或schema(如果没有authority)定义资源的位置。路径(path)可以分成一系列的路径片断(path segment),每个路径片断使用‘/’与其它片断隔开。如果第一个路径片断以‘/’开始,该路径就被认为是绝对的,否则路径就被认为是相对的。例如,/a/b/c由三个路径片断a、b和c组成,此外这个路径是绝对的,因为第一个路径片断(a)的前缀是‘/’。

可选的query定义要传递给资源的查询信息。资源使用该信息获取或生成其它的的数据传递回调用者。例如,http://www.somesite.net/a?x=y, x=y就是一个query,在这个查询中x是某种实体的名称,y是该实体的值。

最后一个部分是fragment。当使用URI进行某种检索操作时,后面执行操作的软件使用fragment聚焦于软件感兴趣的资源部分。

分析一个例子ftp://george@x.com:90/public/notes?text=shakespeare#hamlet

上面的URI把ftp识别为schema,把george@x.com:90识别为基于服务器的authority(其中george是用户信息,x.com是主机,90是端口),把/public/notes识别为路径,把text=shakespeare识别为查询,把hamlet识别为片断。本质上它是一个叫做george的用户希望通过/public/notes路径在服务器x.com的90端口上检索shakespeare文本的hamlet信息。

URI的标准化(normalize)


标准化可以通过目录术语来理解。假定目录x直接位于根目录之下,x有子目录a和b,b有文件memo.txt,a是当前目录。为了显示memo.txt中的内容,你可能输入type \x\.\b\memo.txt。你也可能输入type \x\a\..\b\memo.txt,在这种情况下,a和..的出现是没有必要的。这两种形式都不是最简单的。但是如果输入\x\b\memo.txt,你就指定了最简单的路径了,从根目录开始访问memo.txt。最简单的\x\b\memo.txt路径就是标准化的路径。

通常通过base + relative URI访问资源。Base URI是绝对URI,而Relative URI标识了与Base URI相对的资源。因此有必要把两种URI通过解析过程合并,相反地从合并的URI中提取Relative URI也是可行的。

假定把x://a/作为Base URI,并把b/c作为Relative URI。Resolve这个相对URI将产生x://a/b/c。根据x://a/相对化(Relative)x://a/b/c将产生b/c。

URI不能读取/写入资源,这是统一的资源定位器(URL)的任务。URL是一种URI,它的schema是已知的网络协议,并且它把URI与某种协议处理程序联系起来(一种与资源通讯的读/写机制)。

URI一般不能为资源提供持久不变的名称。这是统一的资源命名(URN)的任务。URN也是一种URI,但是全球唯一的、持久不便的,即使资源不再存在或不再使用。

使用URI

Java API通过提供URI类(位于java.net包中),使我们在代码中使用URI成为可能。URI的构造函数建立URI对象,并且分析URI字符串,提取URI组件。URI的方法提供了如下功能:1)决定URI对象的URI是绝对的还是相对的;2)决定URI对象是opaque还是hierarchical;3)比较两个URI对象;4)标准化(normalize)URI对象;5)根据Base URI解析某个Relative URI;6)根据Base URI计算某个URI的相对URI;7)把URI对象转换为URL对象。
在URI里面有多个构造函数,最简单的是URI(String uri)。这个构造函数把String类型的参数URI分解为组件,并把这些组件存储在新的URI对象中。如果String对象的URI违反了RFC 2396的语法规则,将会产生一个java.net.URISyntaxException。

下面的代码演示了使用URI(String uri)建立URI对象:
URI uri = new URI ("http://www.cnn.com");


如果知道URI是有效的,不会产生URISyntaxException,可以使用静态的create(String uri)方法。这个方法分解uri,如果没有违反语法规则就建立URI对象,否则将捕捉到一个内部URISyntaxException,并把该对象包装在一个IllegalArgumentException中抛出。
下面的代码片断演示了create(String uri):
URI uri = URI.create ("http://www.cnn.com");


URI构造函数和create(String uri)方法试图分解出URI的authority的用户信息、主机和端口部分。对于正确形式的字符串会成功,对于错误形式的字符串,他们将会失败。如果想确认某个URI的authority是基于服务器的,并且能分解出用户信息、主机和端口,这时候可以调用URI的parseServerAuthority()方法。如果成功分解出URI,该方法将返回包含用户信息、主机和端口部分的新URI对象,否则该方法将产生一个URISyntaxException。

下面的代码片断演示了parseServerAuthority():
// 下面的parseServerAuthority()调用出现后会发生什么情况?
URI uri = new URI ("//foo:bar").parseServerAuthority();


一旦拥有了URI对象,你就可以通过调用getAuthority()、getFragment()、getHost()、getPath()、getPort()、getQuery()、getScheme()、getSchemeSpecificPart()和 getUserInfo()方法提取信息。以及isAbsolute()、isOpaque()等方法。

程序1: URIDemo1.java
import java.net.*;

public class URIDemo1 {
public static void main (String [] args) throws Exception {
if (args.length != 1) {
System.err.println ("usage: java URIDemo1 uri");
return;
}
URI uri = new URI (args [0]);

System.out.println ("Authority = " +uri.getAuthority ());
System.out.println ("Fragment = " +uri.getFragment ());
System.out.println ("Host = " +uri.getHost ());
System.out.println ("Path = " +uri.getPath ());
System.out.println ("Port = " +uri.getPort ());
System.out.println ("Query = " +uri.getQuery ());
System.out.println ("Scheme = " +uri.getScheme ());
System.out.println ("Scheme-specific part = " + uri.getSchemeSpecificPart ());
System.out.println ("User Info = " +uri.getUserInfo ());
System.out.println ("URI is absolute: " +uri.isAbsolute ());
System.out.println ("URI is opaque: " +uri.isOpaque ());
}
}


输入java URIDemo1命令后,输出结果如下:
query://jeff@books.com:9000/public/manuals/appliances?stove#ge
Authority = jeff@books.com:9000
Fragment = ge
Host = books.com
Path = /public/manuals/appliances
Port = 9000
Query = stove
Scheme = query
Scheme-specific part = //jeff@books.com:9000/public/manuals/appliances?stove
User Info = jeff
URI is absolute: true
URI is opaque: false


URI类支持基本的操作,包括标准化(normalize)、分解(resolution)和相对化(relativize)。下例演示了normalize()方法。

程序2: URIDemo2.java
import java.net.*;

class URIDemo2 {
public static void main (String [] args) throws Exception {
if (args.length != 1) {
System.err.println ("usage: java URIDemo2 uri");
return;
}
URI uri = new URI (args [0]);
System.out.println ("Normalized URI = " + uri.normalize());
}
}


在命令行输入java URIDemo2 x/y/../z/./q,将看到下面的输出:
Normalized URI = x/z/q

上面的输出显示y、..和.消失了。


URI通过提供resolve(String uri)、resolve(URI uri)和relativize(URI uri)方法支持反向解析和相对化操作。如果指定的URI违反了RFC 2396语法规则,resolve(String uri)通过的内部的create(String uri)调用间接地产生一个IllegalArgumentException。下面的代码演示了resolve(String uri)和relativize(URI uri)。

程序3: URIDemo3.java
import java.net.*;

class URIDemo3 {
public static void main (String [] args) throws Exception {
if (args.length != 2) {
System.err.println ("usage: " + "java URIDemo3 uriBase uriRelative");
return;
}

URI uriBase = new URI (args [0]);
System.out.println ("Base URI = " +uriBase);

URI uriRelative = new URI (args [1]);
System.out.println ("Relative URI = " +uriRelative);

URI uriResolved = uriBase.resolve (uriRelative);
System.out.println ("Resolved URI = " +uriResolved);

URI uriRelativized = uriBase.relativize (uriResolved);
System.out.println ("Relativized URI = " +uriRelativized);
}
}


编译URIDemo3后,在命令行输入java URIDemo3 http://www.somedomain.com/ x/../y,输出如下:
Base URI = http://www.somedomain.com/
Relative URI = x/../y
Resolved URI = http://www.somedomain.com/y
Relativized URI = y



使用URL

Java提供了URL类,每一个URL对象都封装了资源标识符和协议处理程序。获得URL对象的途径之一是调用URI的toURL()方法,也可以直接调用URL的构造函数来建立URL对象。

URL类有多个构造函数。其中最简单的是URL(String url),它有一个String类型的参数。如果某个URL没有包含协议处理程序或该URL的协议是未知的,其它的构造函数会产生一个java.net.MalformedURLException。
下面的代码片断演示了使用URL(String url)建立一个URL对象,该对象封装了一个简单的URL组件和http协议处理程序。
URL url = new URL ("http://www.informit.com");


一旦拥有了URL对象,就可以使用getAuthority()、getDefaultPort()、 getFile()、 getHost()、 getPath()、getPort()、 getProtocol()、getQuery()、getRef()、getUserInfo()、getDefaultPort()等方法提取各种组件。如果URL中没有指定端口,getDefaultPort()方法返回URL对象的协议默认端口。getFile()方法返回路径和查询组件的结合体。getProtocol()方法返回资源的连接类型(例如http、mailto、ftp)。getRef()方法返回URL的片断。最后,getUserInfo()方法返回Authority的用户信息部分。还可以调用openStream()方法得到java.io.InputStream引用。使用这种引用,可以用面向字节的方式读取资源。


下面是URLDemo1的代码。该程序建立一个URL对象,调用URL的各种方法来检索该URL的信息,调用URL的openStream()方法打开与资源的连接并读取/打印这些字节。

程序4: URLDemo1.java
import java.io.*;
import java.net.*;

class URLDemo1 {
public static void main (String [] args) throws IOException {
if (args.length != 1) {
System.err.println ("usage: java URLDemo1 url");
return;
}

URL url = new URL (args [0]);

System.out.println ("Authority = "+ url.getAuthority ());
System.out.println ("Default port = " +url.getDefaultPort ());
System.out.println ("File = " +url.getFile ());
System.out.println ("Host = " +url.getHost ());
System.out.println ("Path = " +url.getPath ());
System.out.println ("Port = " +url.getPort ());
System.out.println ("Protocol = " +url.getProtocol ());
System.out.println ("Query = " +url.getQuery ());
System.out.println ("Ref = " +url.getRef ());
System.out.println ("User Info = " +url.getUserInfo ());

System.out.print ('\n');

InputStream is = url.openStream ();

int ch;
while ((ch = is.read ()) != -1) {
System.out.print ((char) ch);
}
is.close ();
}
}


在命令行输入java URLDemo1 http://www.javajeff.com/articles/articles/html后,上面的代码的输出如下:
Authority = http://www.javajeff.com
Default port = 80
File = /articles/articles.html
Host = http://www.javajeff.com
Path = /articles/articles.html
Port = -1
Protocol = http
Query = null
Ref = null
User Info = null





URL的openStream()方法返回的InputStream类型,这意味着你必须按字节次序读取资源数据,这种做法是恰当的,因为你不知道将要读取的数据是什么类型。如果你事先知道要读取的数据是文本,并且每一行以换行符(\n)结束,你就可以按行读取而不是按字节读取数据了。

下面的代码片断演示了把一个InputStream对象包装进InputStreamReader以从8位过渡到16位字符,进而把结果对象包装进BufferedReader以调用其readLine()方法。

InputStream is = url.openStream ();
BufferedReader br = new BufferedReader (new InputStreamReader (is));
String line;
while ((line = br.readLine ()) != null) {
System.out.println (line);
}
is.close ();


有时候按字节的次序读取数据并不方便。例如,如果资源是JPEG文件,那么获取一个图像处理过程并向该过程注册一个用户使用数据的方法更好。如果出现这种情况,你就有必要使用getContent()方法。

当调用getContent()方法时,它会返回某种对象的引用,而你可以调用该对象的方法(在转换成适当的类型后),采用更方便的方式取得数据。但是在调用该方法前,最好使用instanceof验证对象的类型,防止类产生异常。

对于JPEG资源,getContent()返回一个对象,该对象实现了java.awt.Image.ImageProducer接口。下面的代码演示了使用如何getContent()。
URL url = new URL (args [0]);
Object o = url.getContent ();
if (o instanceof ImageProducer) {
ImageProducer ip = (ImageProducer) o;
// ...
}


查看一下getContent()方法的源代码,你会找到openConnection().getContent()。URL的openConnection()方法返回一个java.net.URLConnection对象。URLConnection的方法反映了资源和连接的细节信息,使我们能编写代码访问资源。

下面的URLDemo2代码演示了openConnection(),以及如何调用URLConnection的方法。

程序5: URLDemo2.java
import java.io.*;
import java.net.*;
import java.util.*;

class URLDemo2 {
public static void main (String [] args) throws IOException {
if (args.length != 1) {
System.err.println ("usage: java URLDemo2 url");
return;
}

URL url = new URL (args [0]);

// 返回代表某个资源的连接的新的特定协议对象的引用
URLConnection uc = url.openConnection ();

// 进行连接
uc.connect ();

// 打印header的内容
Map m = uc.getHeaderFields ();
Iterator i = m.entrySet ().iterator ();
while (i.hasNext ()) {
System.out.println (i.next ());
}
// 检查是否资源允许输入和输出操作
System.out.println ("Input allowed = " +uc.getDoInput ());
System.out.println ("Output allowed = " +uc.getDoOutput ());
}
}



URLConnection的getHeaderFields()方法返回一个java.util.Map。该map包含header名称和值的集合。header是基于文本的名称/值对,它识别资源数据的类型、数据的长度等等。

编译URLDemo2后,在命令行输入java URLDemo2 http://www.javajeff.com,输出如下:
Date=[Sun, 17 Feb 2002 17:49:32 GMT]
Connection=[Keep-Alive]
Content-Type=[text/html; charset=iso-8859-1]
Accept-Ranges=[bytes]
Content-Length=[7214]
null=[HTTP/1.1 200 OK]
ETag=["4470e-1c2e-3bf29d5a"]
Keep-Alive=[timeout=15, max=100]
Server=[Apache/1.3.19 (Unix) Debian/GNU]
Last-Modified=[Wed, 14 Nov 2001 16:35:38 GMT]
Input allowed = true
Output allowed = false


仔细看一下前面的输出,会看到叫做Content-Type的东西。Content-Type识别了资源数据的类型是text/html。text部分叫做类型,html部分叫做子类型。如果内容是普通的文本,Content-Type的值可能是text/plain。text/html表明内容是文本的但是html格式的。

Content-Type是多用途Internet邮件扩展(MIME)的一部分。MIME是传统的传输消息的7位ASCII标准的一种扩展。通过引入了多种header,MIME使视频、声音、图像、不同字符集的文本与7位ASCII结合起来。当使用URLConnection类的时候,你会遇到getContentType()和getContentLength()。这些方法返回的值是Content-Type和Content
分享到:
评论

相关推荐

    关于URI和URN,URL和java中对应的类.pdf

    在Java 1.4及更高版本中,URI类的引入使得开发者在处理URI时有了更多的灵活性和规范性,尤其是在XML和其他标准中使用URI时。URL类虽然在网络操作中更为直接,但在处理字符串解析时可能不如URI类完善。总的来说,URI...

    关于URI和URN,URL和java中对应的类.docx

    URI类在Java 1.4及以后的版本中引入,相比URL,它更加符合相关规范,能更好地处理相对URI,且不涉及网络操作。 当需要从网络上获取资源时,应该使用URL类;如果只是需要标识一个资源,不涉及实际的访问,那么URI类...

    URI (Java Platform SE 8 )

    Java 8 documentation for class URI, a good reference for recapping the concepts and use cases of URI/URL/URN.

    Java网络编程之URI、UR

    总结起来,URI、URL和URN在Java网络编程中扮演着重要角色。理解它们的区别和使用方法是构建网络应用程序的基础。`java.net`包提供的`URI`和`URL`类为开发人员提供了方便的接口来处理这些标识符,而`URLConnection`则...

    Exercicios_URI_em_Java:没有网站,没有URI Em Java

    URI可以是URL(Uniform Resource Locator),也可以是URN(Uniform Resource Name)。本项目"Exercicios_URI_em_Java"显然是一系列关于Java中处理URI的练习,旨在帮助开发者理解和掌握相关知识。 1. **URI的基本...

    SHAJ_URI_Solve_java

    在实际项目中,理解URI的工作原理以及如何在Java中有效地操作它们至关重要,因为这直接影响到网络请求、资源定位和其他与URI相关的功能的实现。通过SHAJ_URI_Solve_java项目,你可以进一步学习和实践这些概念,提高...

    Java URL自定义私有网络协议

    URI是一个更为宽泛的概念,它不仅包括URL,还涵盖了URN(Uniform Resource Name)等其他资源标识方式。 一、URI与URL的区别 URI是一个标准的标识符,用于唯一地识别一个资源。它可以是抽象的,不直接对应物理路径。...

    完整版 Java高级教程 Java语言程序设计 第3章 Java网络基础知识(共15页).ppt

    2. **URI、URL和URN**:URI(通用资源标识符)是一串唯一标识网络资源的字符串。URL(统一资源定位符)是URI的一个子集,特别用于定位Internet上的资源,包含协议、主机名和资源路径。URN(统一资源名称)则是另一种...

    url和uri区别

    在Java编程中,`java.net.URI`类是用来处理URI的,它可以表示绝对或相对的URI,而`java.net.URL`类则专门处理URL,它需要提供完整的定位信息,如协议、主机、路径等,因此不能表示相对路径。 在Java的Servlet API中...

    webservice-java_soap.pdf

    根据提供的文档内容,本文主要介绍了如何在WebService中利用Java SOAP技术处理复杂的Java数据类型,特别是数组及JavaBean等。文章通过具体的示例讲解了如何创建一个可以处理股票交易量的服务,并详细介绍了服务端的...

    java-web课本课后简答题.pdf

    URI是URL和URN的超集。 二、动态Web文档技术 * 服务器端动态文档技术包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术,例如ASP、PHP和JSP技术。 * 客户端动态文档技术是指在HTML页面中嵌入JavaScript脚本...

    java调用webservices

    - `Call` 的创建与配置:设置编码样式、远程对象URI及方法名。 - 参数设置:使用 `Parameter` 类构建参数,并加入到参数列表中。 - 发送请求:通过 `invoke` 方法发送请求,并获取响应。 - 响应处理:检查响应状态码...

    java获取路径的各种方法

    此外,对于URI、URL和URN,它们都是资源的标识方式,但有其特定的用途。URI是统一资源标识符,包括URL和URN,是资源的唯一标识;URL是统一资源定位符,提供了获取资源的方式;URN是统一资源名称,仅标识资源,不提供...

    java-for-web.zip_DEMO

    它可以解析、组合和比较URI,以及获取与URI相关的URL和URN(统一资源名称)。URI通常包括协议、主机、路径、查询参数等部分,是HTTP、HTTPS等网络请求的基础。 在压缩包的"ch12"目录下,很可能包含了关于这些网络...

    uri-[removed]平台URI Java脚本问题

    在IT行业中,URI(Uniform Resource Identifier)是一种用于标识资源的标准,它包括URL(Uniform Resource Locator)和URN(Uniform Resource Name)。URI是互联网上资源的唯一地址,而Java Script是一种广泛应用于...

    uri-problems

    以下是关于URI、URL和URN以及在Java中处理它们的一些关键知识点。 1. URI概念: - URI是一种全球唯一的标识符,可以指向互联网上的任何资源,如网页、文件、服务等。 - URL是URI的一个子集,提供资源的具体定位...

    Java软件开发工程师培训课程体系.pdf

    培训课程将引导学员了解如何创建客户端和服务器端应用程序,使用Socket进行数据通信,以及了解URL、URI和URN的概念。 5. Java图形用户界面(GUI)编程:Java提供了多种GUI工具包,其中Swing是最常用的一种。课程会...

    java网络包全解析

    #### URI与URL **URI (Uniform Resource Identifier)** 和 **URL (Uniform Resource Locator)** 是网络通信中非常重要的概念。URI是一种通用的资源标识方式,它可以识别互联网上的任何资源;而URL是URI的一个子集,...

    Core Java, Volume II--Advanced Features (9th Edition).pdf

    3. 网络编程:书中将讲解如何使用Java编写网络应用程序,涉及套接字编程、URI、URL和URN的处理,以及如何利用Java的高级网络API,例如***包,进行网络通信。 4. 数据库编程设施:本章将介绍如何使用JDBC(Java...

    URI

    在Java编程语言中,URI扮演着核心角色,它与URL(Uniform Resource Locator,统一资源定位符)和URN(Uniform Resource Name,统一资源名)共同构成了资源定位和命名的体系。 URI的设计目标是为了提供一种通用的...

Global site tag (gtag.js) - Google Analytics