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 involves 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 involves 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, four different classes
java.net package work together
to implement the protocol handler mechanism. Those classes are
URL is the only concrete class in this group;
URLConnection are abstract classes and
URLStreamHandlerFactory is an interface. ...