Additional top-level class in compilation unit: UrlDeserializedState.
URL represents a Uniform Resource
Locator, a pointer to a "resource" on the World
Wide Web. A resource can be something as simple as a file or a
directory, or it can be a reference to a more complicated object,
such as a query to a database or to a search engine. More
In general, a URL can be broken into several parts. Consider the following example:
http://www.example.com/docs/resource1.html
The URL above indicates that the protocol to use is
http (HyperText Transfer Protocol) and that the
information resides on a host machine named
www.example.com. The information on that host
machine is named /docs/resource1.html. The exact
meaning of this name on the host machine is both protocol
dependent and host dependent. The information normally resides in
a file, but it could be generated on the fly. This component of
the URL is called the path component.
A URL can optionally specify a "port", which is the
port number to which the TCP connection is made on the remote host
machine. If the port is not specified, the default port for
the protocol is used instead. For example, the default port for
http is 80. An alternative port could be
specified as:
http://www.example.com:1080/docs/resource1.html
The syntax of URL is defined by RFC 2396: Uniform
Resource Identifiers (URI): Generic Syntax, amended by RFC 2732: Format for
Literal IPv6 Addresses in URLs. The Literal IPv6 address format
also supports scope_ids. The syntax and usage of scope_ids is described
here.
A URL may have appended to it a "fragment", also known as a "ref" or a "reference". The fragment is indicated by the sharp sign character "#" followed by more characters. For example,
http://www.example.com/index.html#chapter1
This fragment is not technically part of the URL. Rather, it
indicates that after the specified resource is retrieved, the
application is specifically interested in that part of the
document that has the tag chapter1 attached to it. The
meaning of a tag is resource specific.
An application can also specify a "relative URL", which contains only enough information to reach the resource relative to another URL. Relative URLs are frequently used within HTML pages. For example, if the contents of the URL:
http://www.example.com/index.html
FAQ.html
http://www.example.com/FAQ.html
The relative URL need not specify all the components of a URL. If the protocol, host name, or port number is missing, the value is inherited from the fully specified URL. The file component must be specified. The optional fragment is not inherited.
URLjava.net.URL constructors are deprecated.
Developers are encouraged to use java.net.URI to parse
or construct a URL. In cases where an instance of java.net.URL is needed to open a connection, URI can be used
to construct or parse the URL string, possibly calling URI#parseServerAuthority() to validate that the authority component
can be parsed as a server-based authority, and then calling
URI#toURL() to create the URL instance.
The URL constructors are specified to throw
MalformedURLException but the actual parsing/validation
that is performed is implementation dependent. Some parsing/validation
may be delayed until later, when the underlying stream handler's implementation is called.
Being able to construct an instance of URL doesn't
provide any guarantee about its conformance to the URL
syntax specification.
The URL class does not itself encode or decode any URL components
according to the escaping mechanism defined in RFC 2396. It is the
responsibility of the caller to encode any fields, which need to be
escaped prior to calling URL, and also to decode any escaped fields,
that are returned from URL. Furthermore, because URL has no knowledge
of URL escaping, it does not recognise equivalence between the encoded
or decoded form of the same URL. For example, the two URLs:
http://foo.com/hello%20world and http://foo.com/hello world/
would be considered not equal to each other.
Note, the java. class does perform escaping of its
component fields in certain circumstances. The recommended way
to manage the encoding and decoding of URLs is to use java.,
and to convert between these two classes using toURI() and
URI#toURL().
The URLEncoder and URLDecoder classes can also be
used, but only for HTML form encoding, which is not the same
as the encoding scheme defined in RFC 2396.
API Note
Applications working with file paths and file URIs should take great
care to use the appropriate methods to convert between the two.
The Path#of(URI) factory method and the File#File(URI)
constructor can be used to create Path or File
objects from a file URI. Path#toUri() and File#toURI()
can be used to create a URI from a file path, which can be
converted to URL using URI#toURL().
Applications should never try to construct or parse a URL
from the direct string representation of a File or Path
instance.
Before constructing a URL from a URI, and depending
on the protocol involved, applications should consider validating
whether the URI authority can be parsed as server-based.
Some components of a URL or URI, such as userinfo, may be abused to construct misleading URLs or URIs. Applications that deal with URLs or URIs should take into account the recommendations advised in RFC 3986, Section 7, Security Considerations.
All URL constructors may throw MalformedURLException.
In particular, if the underlying URLStreamHandler
implementation rejects, or is known to reject, any of the parameters,
MalformedURLException may be thrown.
Typically, a constructor that calls the stream handler's parseURL method may
throw MalformedURLException if the underlying stream handler
implementation of that method throws IllegalArgumentException.
However, which checks are performed, or not, by the stream handlers
is implementation dependent, and callers should not rely on such
checks for full URL validation.
| Modifier and Type | Class and Description |
|---|---|
| private static class |
| Modifier and Type | Field and Description |
|---|---|
| private String | authority
The authority part of this URL. |
| pack-priv static final String | |
| private static final URLStreamHandlerFactory | |
| private static volatile URLStreamHandlerFactory | factory
The URLStreamHandler factory. |
| private String | file
The specified file name on that host. |
| pack-priv transient URLStreamHandler | handler
The URLStreamHandler for this URL. |
| private static final Hashtable | handlers
A table of protocol handlers. |
| private int | |
| private String | host
The host name to connect to. |
| private transient InetAddress | hostAddress
The host's IP address, used in equals and hashCode. |
| private static final ScopedValue | |
| private transient String | path
The path part of this URL. |
| private int | port
The protocol port to connect to. |
| private String | protocol
The protocol to use (ftp, http, nntp, ... |
| private static final String | protocolPathProp
The property which specifies the package prefix list to be scanned for protocol handlers. |
| private transient String | query
The query part of this URL. |
| private String | ref
# reference. |
| private static final ObjectStreamField[] | |
| pack-priv static final long | |
| private static final Object | |
| private transient UrlDeserializedState | |
| private transient String | userInfo
The userinfo part of this URL. |
| Access | Constructor and Description |
|---|---|
| public | URL(String
the name of the protocol to use. protocol, String the name of the host. host, int the port number on the host. port, String the file on the host file)
Deprecated
since 20. Use
URI#toURL() to construct an instance of URL.
Creates a |
| public | URL(String
the name of the protocol to use. protocol, String the name of the host. host, String the file on the host. file)
Deprecated
since 20. Use
URI#toURL() to construct an instance of URL.
Creates a URL from the specified |
| public | URL(String
the name of the protocol to use. protocol, String the name of the host. host, int the port number on the host. port, String the file on the host file, URLStreamHandler the stream handler for the URL. handler)
Deprecated
since 20. Use
of(URI, URLStreamHandler) to construct an instance of URL
associated with a custom protocol handler.
Creates a |
| public | URL(String
the spec)String to parse as a URL.
Deprecated
since 20. Use
URI#toURL() to construct an instance of URL.
Creates a |
| public | URL(URL
the context in which to parse the specification. context, String the spec)String to parse as a URL.
Deprecated
since 20. Use
URI#toURL() to construct an instance of URL.
Creates a URL by parsing the given spec within a specified context. |
| public | URL(URL
the context in which to parse the specification. context, String the spec, URLStreamHandler String to parse as a URL.the stream handler for the URL. handler)
Deprecated
since 20. Use
of(URI, URLStreamHandler) to construct an instance of URL
associated with a custom protocol handler.
Creates a URL by parsing the given spec with the specified handler within a specified context. |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | Returns: true if the objects are the same;
false otherwise.the URL to compare against. obj)Overrides java. Compares this URL for equality with another object. |
| private URL | |
| public String | |
| public final Object | |
| public final Object | Returns: the content object of this URL that is the first match of the types specified in the classes array. null if none of the requested types are supported.an array of Java types classes)Gets the contents of this URL. |
| public int | Returns: the port numberGets the default port number of the protocol associated
with this |
| public String | Returns: the file name of thisURL,
or an empty string if one does not existGets the file name of this |
| public String | |
| pack-priv synchronized InetAddress | Returns: anInetAddress representing the hostReturns the address of the host represented by this URL. |
| public String | Returns: the path part of thisURL, or an
empty string if one does not existGets the path part of this |
| public int | |
| public String | |
| public String | Returns: the query part of thisURL,
or null if one does not existGets the query part of this |
| public String | Returns: the anchor (also known as the "reference") of thisURL, or null if one does not existGets the anchor (also known as the "reference") of this
|
| pack-priv static URLStreamHandler | |
| public String | Returns: the userInfo part of thisURL, or
null if one does not existGets the userInfo part of this |
| public synchronized int | Returns: a hash code for thisURL.Overrides java. Creates an integer suitable for hash table indexing. |
| pack-priv boolean | |
| private boolean | |
| pack-priv static boolean | isOverrideable(String protocol)
Non-overrideable protocols: "jrt" and "file" Character-based comparison for performance reasons; also ensures case-insensitive comparison in a locale-independent fashion. |
| private boolean | |
| private static URLStreamHandler | |
| private static URLStreamHandler | |
| pack-priv static String | |
| public static URL | Returns: a newURL instance created from the given URI
and associated with the given URLStreamHandler, if anythe uri, URLStreamHandler URI from which the returned URL should
be builta custom protocol stream handler for
the returned handler)URL. Can be null,
in which case the default stream handler for
the protocol if any, will be used.Creates a URL from a URI, as if by invoking |
| public URLConnection | Returns: aURLConnection linking
to the URL.Returns a |
| public URLConnection | Returns: aURLConnection to the URL.the Proxy through which this connection
will be made. If direct connection is desired,
Proxy.NO_PROXY should be specified. proxy)Same as |
| public final InputStream | Returns: an input stream for reading from the URL connection.Opens a connection to this |
| private synchronized void | readObject(ObjectInputStream
the s)ObjectInputStream from which data is readreadObject is called to restore the state of the URL from the stream. |
| private Object | Returns: a newly created object from deserialized dataReplaces the de-serialized object with an URL object. |
| private void | |
| public boolean | |
| pack-priv void | set(String
the name of the protocol to use protocol, String the name of the host host, int the port number on the host port, String the authority part for the url authority, String the username and password userInfo, String the file on the host path, String the query part of this URL query, String the internal reference in the URL ref)Sets the specified 8 fields of the URL. |
| private URL | |
| private void | |
| public static void | setURLStreamHandlerFactory(URLStreamHandlerFactory
the desired factory. fac)Sets an application's |
| public String | Returns: a string representation of this object.Constructs a string representation of this |
| public String | Returns: a string representation of this object.Overrides java. Constructs a string representation of this |
| public URI | Returns: a URI instance equivalent to this URL.Returns a |
| private synchronized void | writeObject(ObjectOutputStream
the s)ObjectOutputStream to which data is writtenWriteObject is called to save the state of the URL to an ObjectOutputStream. |