Chapter 16. Protocol Handlers
When designing an architecture that
would allow them to build a self-extensible browser, the engineers at
Sun divided the problem into two parts: handling protocols and
handling content. Handling a protocol means taking care of the
interaction between a client and a server: generating requests in the
correct format, interpreting the headers that come back with the
data, acknowledging that the data has been received, etc. Handling
the content means converting the raw data into a format Java
understands, for example, an InputStream or an
AudioClip. These two problems, handling protocols
and handling content, are distinct. The software that displays a GIF
image doesn’t care whether the image was retrieved via FTP,
HTTP, gopher, or some new protocol. Likewise, the protocol handler,
which manages the connection and interacts with the server,
doesn’t care if it’s receiving an HTML file or an MPEG
movie file; at most, it will extract a content type from the headers
to pass along to the content handler.
Java divides the task of handling protocols into a number of pieces.
As a result, there is no single class called
ProtocolHandler. Instead, pieces of the protocol
handler mechanism are implemented by four different class es in the
java.net package: URL,
URLStreamHandler,
URLConnection, and
URLStreamHandlerFactory. URL is
the only concrete class in this group;
URLStreamHandler and
URLConnection are both abstract classes, and
URLStreamHandlerFactory is an interface. ...