关于java:javanetURL-记录

7次阅读

共计 3051 个字符,预计需要花费 8 分钟才能阅读完成。

有一个十分重要的类,而我对它知之甚少,它就是:java.net.URL。在各个框架都能看到它的身影。我平时也常常用到,然而没有器重,了解不够。

URL 是什么,格局什么样子?参考维基百科:https://zh.wikipedia.org/wiki…
本文次要是将 java.net.URL 及相干的几个类的正文进行记录和阐明。
记录和阐明的目标是不便本人的查阅。

1. java.net.URL

/**
  * 类 URL 示意对立资源定位符,指向万维网上的“资源”的指针。* 资源能够是文件或目录这样简略的货色,也能够是对更简单的对象的援用,例如对数据库或搜索引擎的查问。* 无关 URL 类型及其格局的更多信息,请拜访:[Types of URL](http://web.archive.org/web/20051219043731/http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html)
  *  通常,URL 能够分为几个局部。请思考以下示例:*  http://www.example.com/docs/resource1.html
  * 下面的 URL 示意要应用的协定是 http(超文本传输协定),并且该信息驻留在名为 www.example.com 的主机上。* 该主机上的信息名为 /docs/resource1.html  主机上此名称的确切含意是依赖于协定和依赖于主机。“信息”通常驻留在文件中,也能够在运行中生成。* URL 能够抉择指定“端口”,该端口是在近程主机上进行 TCP 连贯的端口号。如果未指定端口,则应用协定的默认端口。例如,http 的默认端口为 80。备用端口能够指定为:http://www.example.com:1080/docs/resource1.html
  * ...
  */
public final class URL implements java.io.Serializable {

    transient URLStreamHandler handler;
    
    /**
     * 返回一个 URLConnection 实例,这个实例代表 URL 援用的远端对象的一个连贯。* 每当 URL 协定对应的 handler 调用 openConnection(URL) 一个新的 URLConnection 会被创立
     * 应该留神,一个 URLConnection 的实例不会在创立的时候建设真正的网络连接。* 创立实在的网络连接产生在 URLConnection.connect() 调用。* 如果对于 handler 的协定,存在一个公共的、专门的 URLConnection 子类属于以下包之一或其子包之一:java.lang \ java.io\ java.util\java.net, 返回的这个连贯将会是这个子类。例如:* 对于 HTTP 协定,一个 HttpURLConnection 会被返回,JAR 协定的话则 JarURLConnection 会被返回。* /      
      public URLConnection openConnection() throws java.io.IOException {return handler.openConnection(this);
    }

     public final InputStream openStream() throws java.io.IOException {return openConnection().getInputStream();}
}

2.URLConnection

**/**
 * 抽象类 URLConnection 是示意应用程序和 URL 之间的通信链接的所有类的超类。这个类的一个实例能够被用来读或写被这个 URL 援用的资源。* 通常,创立一个 URL 的连贯是多重步骤的过程:* openConnection()      ->  connect()
 * 1、当在一个 URL 对象调用 openConnection,coonnection 对象被创立
 * 2、设置参数和个别申请属性被操纵。* 3、应用 connect 办法建设与近程对象的理论连贯。* 4、远端对象变为可用。远端对象的头信息、字段和内容能够被获取。* 设置参数能够通过以下办法被批改:* setAllowUserInteraction
 * setDoInput
 * setDoOutput
 * setIfModifiedSince
 * setUseCaches
 * 能够应用以下办法批改通用申请属性:* setRequestProperty
 * AllowUserInteraction 和 UseCaches 参数的默认值能够通过 setDefaultAllowUserInteraction 和 setDefaultUseCaches 来设置。* 以上每一个 set 办法有一个对应的 get 办法来获取参数或个别申请属性的值。* 以下办法在和远端通信对象创立后用来获取头、字段和内容:* getContent
 * getHeaderField
 * getInputStream
 * getOutputStream
 * 一些特定的头字段被经出获取,包含:* getContentEncoding
 * getContentLength
 * getContentType
 * getDate
 * getExpiration
 * getLastModifed
 * 提供了不便的获取这些字段的办法。* getContentType 办法被 getContent 办法用来判断近程对象的类型;子类可能会发现重写 getContentType 办法很不便。* 在常见状况下,能够疏忽所有预连贯参数和个别申请属性:预连贯参数和申请属性默认为正当值。* 对于这个接口的大多数客户端来说,只有两个乏味的办法:getInputStream 和 getContent,它们通过便当办法镜像到 URL 类中。* 调用 close() 的办法 InputStream 或 OutputStream 一个的 URLConnection 的申请后,可能开释与此实例相关联的网络资源,除非特定的协定标准为其指定不同的行为。*/
public abstract class URLConnection {}**

3. URLStreamHandler

/**
 * 此抽象类是所有流协定解决治理类的通用父类。一个流协定的 handler 晓得怎么去为一个特定协定创立一个连贯,比方:http https
 * 大多数状况,URLStreamHandler 子类的实例是不会被利用间接创立的。相同,当结构一个 URL 的时候,第一次协定的被遇到,失当的流协定 handler 被主动加载。*/
public abstract class URLStreamHandler {
    /**
     * 为被 URL 参数援用的对象关上一个连贯,这个办法应该被子类重写。* 如果对于 handler 的协定,存在一个公共的、专门的 URLConnection 子类属于以下包之一或其子包之一:java.lang \ java.io\ java.util\java.net, 返回的这个连贯将会是这个子类。例如:* 对于 HTTP 协定,一个 HttpURLConnection 会被返回,JAR 协定的话则 JarURLConnection 会被返回。*/
    abstract protected URLConnection openConnection(URL u) throws IOException;
}

java 的正文写的十分棒,通过正文咱们就大抵理解了 URL 资源在 java 中如何读写,理解了在 java 如何实现自定义的一中 URL 的协定的读写,比方 JAR 协定,能够去看一下怎么通过 jar 加载 class 及相干内容的。

正文完
 0