Manejador+de+Protocolos

Controladores de protocolo en Java

Trabajar con un manejador de contenido existente

Cuando "pedir" para un archivo de Internet, el navegador por lo general inspecciona el MIME (Multipurpose Internet Mail Extensions) que tipo de archivo para determinar la forma de proceso. Los tipos MIME ofrecer el navegador con la información sobre el tipo de archivo-ejemplo, si el archivo es HTML, entonces el tipo MIME de texto para ser / html. Si el archivo es un jpg. , entonces el tipo MIME se image / jpeg, si el tipo de archivo es un MPEG de vídeo, a continuación, el tipo MIME será de video / mpeg, etc) Haga clic [|Aquí] para ver una descripción detallada de los actuales tipos MIME.

Java le permite crear una aplicación de red que utiliza una dirección URL para acceder a un recurso Web a través de la java.net.URLConnection clase. Similar a un navegador Web, esta clase inspecciona el tipo MIME del archivo recibido y determina la forma de proceso. A continuación, llama a una clase especializada que leen el formato de archivo y que pone en un formato "legible" forma. Estas clases especializadas que se conoce como "controladores de contenido" y que son subclases de lajava.net.ContentHandler clase abstracta. El propósito práctico de un manejador de contenidos es la de extraer un objeto específico para un tipo MIME de unURLConnection. Puede ampliar esta clase abstracta para los espectadores nuevas, nuevos tipos MIME, o para los tipos existentes que no son, por defecto, con el apoyo de Java. Java ofrece un conjunto predeterminado de los controladores de contenido que cubren la mayoría de los tipos MIME utilizada. el contenido de 'Los nombres de los controladores de clase, junto con los nombres de los paquetes donde se puede encontrar-refleja el nombre del tipo MIME. Por ejemplo, MIME / imagen tipo png 's contenido del controlador se encuentra en el sun.net.www.content.image paquete y su nombre es png.class. Así, el sun.net.www.content camino es fijo y el resto depende del tipo MIME.

**Nota:** Generalmente, usted puede encontrar el sun.net.www.content ... camino en el  / jre / lib / rt.jar.



Tabla 1: Java correspondencia entre tipos MIME y sus manejadores de contenido.

Cuando acceda a un recurso de Internet a través de URLConnection, Java se une el manejador de contenidos adecuados con el tipo MIME de los recursos. Java determina el manejador de contenidos adecuada utilizando el tipo MIME para encontrar las clases que implementa.

Para crear un manejador de contenido, primero debe crear una subclase de la ContentHandler clase y reemplazar el getContenido método. Este método obtiene unaURLConnection argumento y devuelve un objeto objeto que encaja con el tipo MIME. La manera más efectiva de usar el objeto devuelto por este método es hacer una conversión convierte en el objeto correcto. Ésta es la sintaxis para la getContenido método: getContenido pública de objetos abstractos (URLConnection URLcon) throws IOException Para unirse a un controlador de contenido con un tipo MIME, debe utilizar el HandlerFactory java.net.Content interfaz. La implementación de este interfaz te obliga a poner en práctica un comportamiento a la ContentHandlerFactory.createContentHandler método. Este método se obtiene un argumento de cadena que representa el tipo MIME y utiliza esta cadena para la devolución del controlador de contenido adecuado:

createContentHandler ContentHandler (String mime_type)

Para instalar un ContentHandlerFactory como el tipo de defecto, se debe llamar al URLConnection.setContentHandlerFactory método:

setContentHandlerFactory public static void (ContentHandlerFactory CHF)

Para crear un visor para un tipo MIME para que un manejador de contenido predeterminado ya existe, seleccione una ordinaria. jpg imagen que coincide con un tipo de manejador de contenido predeterminado. Solicitar al. jpg archivo desde un servidor HTTP utilizando la dirección correcta.

**Listado 1** se muestra el uso de un mínimo de servidor HTTP (HTTPServer) que se ejecuta en la máquina local en el puerto 80. Se trata de utilizar la dirección URL http://localhost/image.jpg (aunque puede utilizar cualquier otro jpg. imagen, siempre y cuando lo pones en el C: \ JEditor \ controladores de la guía -que es el directorio por defecto que es utilizado por el HTTPServer para localizar el recurso solicitado). Por supuesto, usted puede hacer cambios mínimos en la solicitud de acceso a cualquiera. jpg imagen en Internet. Todo lo que tienes que hacer en este caso, es cambiar la dirección y, finalmente, configurar la aplicación para pasar a través de un servidor proxy.

Para probar esta aplicación, asegúrese de que tiene en las clases de HTTPServer y JPGViewer en C: \ JEditor \ controladores . También es necesario en el mismo directorio un. jpg nombre de archivo de imagen que puede ser cualquier imagen JPG.



Como se muestra en **<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">la Figura 1 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">, Internet Explorer muestra el mismo resultado que el JPGViewer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación. Esto se debe a la imagen / jpeg; tipo MIME es un "miembro" de los tipos MIME de Internet estándar.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**Listado 2** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">corresponde con el tipo MIME, text / plain y se puede utilizar para ver el contenido de cualquier archivo de texto. El controlador de contenido Java para este tipo MIME es plain.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y se encuentra en el sun.net.www.content.text <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete. En este ejemplo se utiliza la misma HTTPServer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y la dirección http://localhost/test.txt <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. El archivo de texto denominado test.txt <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y contiene el texto "Este es un archivo de texto ..." <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. Por supuesto, puede utilizar cualquier otro texto de archivos sólo recuerda copiar el archivo de texto en el C: \ \ JEditor \ controladores <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">de la guía, de modo que HTTPServer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">lo puede encontrar.



<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">﻿La figura 2 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">muestra cómo la test.txt <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">contenido del archivo es visto por el IE y en el ListTextFiles <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Crear un controlador de contenido ** <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">En primer lugar, crear un nuevo tipo MIME que representan una nueva clase de tipo de archivo. Supongamos que este nuevo tipo de tipo de archivo es una imagen con las siguientes características:
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La extensión de archivo hasthe . xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">.
 * <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El archivo contiene información acerca de una imagen que sólo admite dos colores.
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La información se utiliza para crear un MemoryImageSource <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">imagen.
 * <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La primera línea en el archivo contiene la anchura y la altura de la imagen en el formato ancho | altura.
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La segunda línea del archivo contiene los códigos de los dos colores en el formato code_color_1 * x * y * code_color_2 <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">(los códigos compatibles son <- 0-negro ,1-rojo-azul ,2-verde ,3, 4 -, other_code-nueva de color blanco (112 112 112) -> <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">).
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El resto del archivo contiene las líneas alternativas de la forma number_of_pixels_of_the_first_color * x * y el color y number_of_pixels_of_the_second_ <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">.
 * <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El tipo MIME asociado para este tipo de archivo es la imagen / xy.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La Figura 3 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">muestra un ejemplo de archivo, llamado image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">:



<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Cada línea de las fechas deben ser escritos en el archivo en una línea separada-el archivo image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">mencionadas anteriormente debe tener 54 líneas: <span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">image.xy archivo 25 | 25 de 5 y 0 * x * 4 * y 4 x 80 x 5 y 15 y de 11 x 10 x 5 y 15 y 3 x 10 x 6 y 15 y de 11 x 15 x 14 y 5 y de 12 x 20 x 14 y 5 y de 12 x 20 x 15 y 5 y de 11 x 20 x 7 y 5 - y de 2 x 20 x 6 y 5 y de 20 x 11 x 11 y 5 y de 13 x 4 x 1 y 5 y de 11 x 11 x 13 y 5 y 12 -x 4 x 12 y 5 y de 38 x 11 x <- 0-negro ,1-rojo-azul ,2-verde ,3 ,4-blanco, other_code-nuevo color (112112112) - >

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">Recuerda que esto es sólo un ejemplo de archivo de formato simple. Por supuesto, en la vida real que probablemente utilice la mayoría de formatos mucho más complicado, como. jpg o. bmp formatos. Edición de la información de la imagen en el texto es más fácil de entender que en binario. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Ahora que tiene un nuevo tipo de imagen, no los espectadores actuales se puede ver. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Eso significa que usted tiene que crear su propio visor. Para ello, cree un controlador de nuevos contenidos que se sabe cómo procesar la información del archivo y devolver el deseable MemoryImageSource <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objeto.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**Listado 3**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;"> muestra un controlador posible contenido para este tipo de archivo.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Tenga en cuenta que esta clase se denomina xy.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y se almacena en el sun.net.www.content.image <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete. Esto ayuda a Java encuentra automáticamente el contenido de este controlador, que le ahorra tener que instalar manualmente llamando a la URLConnection.setContentHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método. También le ahorra tener que definir una ContentHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">fábrica. Tenga en cuenta que esta clase extiende la clase de controlador de contenido y define el getContenido <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método. El getContenido <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">implementación del método es bastante simple: se utiliza el StringTokenizer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase de dividir el archivo en fichas y luego utiliza los símbolos para construir una matriz de colores que va como un argumento a la MemoryImageSource <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">constructor. Por supuesto, el getContenido <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">implementación del método depende del tipo de archivo. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Nota: ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La fuente de la MemoryImageSource <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">se puede encontrar aquí. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Ahora ya está listo para ver una xy. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">archivo. El único problema es que no hay un servidor de Internet puede devolver una imagen / tipo MIME xy. Para resolver este problema, puede pedir a la gente clave para incorpotate su nuevo tipo MIME en las aplicaciones adecuadas, o puede crear un servidor de Internet nuevo que puede devolver el tipo de MIME. Esta última es la opción más realista. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Aunque los detalles de cómo funciona este servidor están fuera del alcance de este artículo, es importante saber que las líneas que averiguar si el tipo de MIME image / xy y devolver este tipo MIME son:

<span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">/ / Saber si el archivo solicitado es un xy un caso (ext.indexOf ("xy ")!=- 1) ContentType =" image / xy ". / / Escribir el tipo MIME en el encabezado para el cliente a cabo. writeBytes ("Content-type:" + ContentType + "\ r \ n");

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**Listado 4** muestra una mínima servidor HTTP que se ejecuta en el localhost: 80 y devuelve una imagen / xy; tipo MIME cuando se recibe una solicitud de xy. archivo. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El paso final es poner a prueba el manejador de contenidos. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para ello, crear una sencilla aplicación que utiliza un URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">a la petición del image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">archivo en el servidor HTTP creado anteriormente (esto significa que la aplicación de prueba es un cliente HTTP). El servidor buscará los recursos solicitados en el C: \ Jeditor \ controladores de <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">directorio. El servidor comprueba la extensión del archivo y devuelve el tipo MIME adecuado en la cabecera de la respuesta. También devuelve el contenido del archivo como trozos de información bytes.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**Listado 5**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;"> muestra un ejemplo de aplicación de la prueba. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Tenga en cuenta que si no almacenar el xy.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">en el sun.net.www.content.image <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete, usted tiene que decomment la XYFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase y las dos líneas en el método principal (para instalar manualmente el controlador de contenido). Eso es porque, en este caso, Java no se encuentra el controlador de contenido adecuado en su búsqueda automática. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para probar el controlador de nuevos contenidos en una sola máquina, primero tienes que estar seguro de que usted tiene la image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">archivo y el HTTPServer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">, TestXYHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clases en el mismo directorio ( C: \ Jeditor \ controladores <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">). También, asegúrese de que ha almacenado el de la xy.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase en el sun.net.www.content.image <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete. Después de eso, todo lo que tienes que hacer es ejecutar el servidor HTTP y el TestXYHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación. La dirección URL para las pruebas de este ejemplo es http://localhost/image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y se fijó en el TestXYHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para ver la diferencia entre un cliente de Internet que no entiende el. xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">los archivos y su TestXYHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">cliente, ejecute los dos, y ver los resultados, que puede parecer un montón, como **<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">la figura 3 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">.



<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Como se puede ver en **<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">la Figura 4 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">, la aplicación se actúa como espectador, pero el IE muestra el cliente de diálogo Descarga de archivos. Si hace clic en el botón Abrir, el IE se abrirá el archivo en el modo de texto con la ayuda de un visor de texto externos como el Bloc de notas o Wordpad, que no es lo que quieres. Si hace clic en el botón Guardar, IE descargar el archivo como un. exe <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">de la aplicación. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Recuerde que, incluso si el recurso solicitado es un binario o un archivo de texto, la mayor diferencia en el uso de un manejador de contenidos de Java consiste en la conversión fundidas sobre el objeto devuelto por el método getContenido.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Trabajar con un controlador de protocolo existente ** <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">Cada vez que "pedir" para un recurso de Internet, el navegador debe completar tres tareas esenciales. <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 1. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La primera tarea es analizar la dirección URL especificada (conforme a las especificaciones de URL) y extraer el nombre del protocolo. <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 2. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La segunda tarea se basa en el nombre del protocolo, el navegador es la elección de "las palabras correctas" para conectar y comunicar con el servidor solicitado.La última tarea es poner los recursos recibidos en una forma legible. Estas dos primeras tareas se llevan a cabo por el controlador de protocolo. <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 3. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La última tarea es realizada por el manejador de contenido. El navegador tiene un controlador de protocolo para cada tipo de protocolo, por lo que el controlador de protocolo HTTP saber "hablar" con un servidor HTTP, un controlador de protocolo FTP saber "hablar" con un servidor FTP, etc <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">En Java, los objetos URL utilizar los controladores de protocolo para abrir conexiones a los servidores especificados. Por defecto, Java soporta un conjunto de controladores de protocolo que se han desarrollado protocolos comunes para la mayoría, pero Java también le ofrece soporte para los controladores de nuevo protocolo debe crear. Este apoyo se puede encontrar en el java.net.URLStreamHandler y java.net.URLConnection clases. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">por defecto "controladores de protocolo nombres de clase, junto con sus nombres de los paquetes asociados, reflejar los nombres propios del protocolo. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Por ejemplo, el protocolo http buen manejador de protocolo se encuentra en el sun.net.www.protocol.http <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete y su nombre es Handler.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. El sun.net.www.protocol <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">camino es fijo y el resto depende del nombre del protocolo. La siguiente tabla contiene la correspondencia entre algunos nombres de protocolo y sus controladores de protocolo (J2SE 1.5):



<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**Listado 1** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">se muestra cómo crear un sencillo cliente Java que utiliza el controlador de protocolo específico para el protocolo HTTP para conectarse y comunicarse con un servidor HTTP. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Como puede ver, el protocolo HTTP controlador predeterminado elimina la necesidad de escribir todos los comandos HTTP porque Java sabe cómo ponerlo en práctica en el sun.net.www.protocol.http paquete.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Creación de un controlador de protocolo **

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">También hay tres pasos para crear su propio controlador de protocolo:

<span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 1. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El primer paso consiste en la ampliación del URLStreamHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase. Esta clase abstracta y es la superclase para cada controlador de protocolo. Cuando se crea una clase de controlador de protocolo, debe llamarse Handler.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">(que se muestra en **el Listado 2** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">) y tiene que reemplazar el URLStreamHandler de openConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">métodos:    <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"> <span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">2. protegidas openConnection URLConnection resumen (URL url) throws IOException openConnection **URLConnection** protegidas (URL url, proxy Proxy) throws IOException   <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Como puede ver, estos métodos devuelven URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objetos. Un URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objeto puede ser utilizado para crear la entrada y / o salida de volcado en el recurso especificado. Obviamente, el recurso se especifica mediante el argumento de dirección URL. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Otro método importante de la URLStreamHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase es parseURL <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">:    <span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">protected void parseURL (URL url, String cadena, int inicio, final int):    <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Este método se analiza cadenas que representan direcciones URL (el argumento de cadena). <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El argumento URL representa un objeto URL que mantiene el resultado del proceso de análisis. El inicio y los argumentos finales delimitar la parte del argumento de cadena que se va a analizar. De forma predeterminada, el argumento de cadena se analiza para cumplir con la especificación de HTTP. Cuando esto no sea posible, hay que reemplazar este método. En este artículo, podrás ver un ejemplo de cómo reemplazar el parseURL <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método para un determinado tipo de dirección URL. <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 3. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El segundo paso de la creación de un controlador de protocolo consiste en definir una clase que extiende la URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase. El URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objeto devuelto por la openConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método (anulado por la clase que extiende la URLStreamHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">) se debe pasar al constructor de la clase definida nuevo. Esta clase implementa a continuación, la comunicación con el servidor. Para ello, la nueva clase en general, prevalece sobre tres URLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">métodos. Estos métodos son: conectar, getInputStream <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y getContenido <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. La sintaxis de estos métodos son los siguientes: <span style="display: block; line-height: 150%; margin-left: 72pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">o abstract void pública conectar throws IOException <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">: Este s utilizada para abrir una conexión con un recurso indicado por una dirección URL. <span style="display: block; line-height: 150%; margin-left: 72pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">o pública getInputStream InputStream throws IOException <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">: Este se utiliza para "leer" de la conexión abierta. El aspecto importante de este método es que sólo lee "limpiar" la información. Eso significa que la información no contiene las particularidades del protocolo, como cabeceras de protocolo. La información se devuelve en un InputStream <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objeto. <span style="display: block; line-height: 150%; margin-left: 72pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">o getContenido objeto público throws IOException <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">: Este se utiliza para determinar el tipo MIME del recurso solicitado (llamando a la getContentType <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método). El método utiliza el tipo MIME para asociarse con controlador de contenidos adecuados. El objeto devuelto por este método es el resultado de que llama al gestor de contenidos getContenido <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método. <span style="display: block; line-height: 150%; margin-left: 36pt; text-align: justify; text-indent: -18pt;"><span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"> 4. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El tercer paso consiste en asociar un controlador de protocolo con un protocolo mediante el URLStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">interfaz. Al implementar esta interfaz, también hay que aplicar la createURLStreamHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método.El createURLStreamHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método recibe un argumento de cadena que representa el nombre del protocolo (por ejemplo, http, ftp, nntp, archivo-el último ejemplo indica los recursos que están en el equipo local.) y devuelve un objeto que representa el controlador de protocolo adecuado. Por lo tanto, el nombre del protocolo es la clave para localizar el controlador de protocolo adecuado. <span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">5. URLStreamHandler createURLStreamHandler (protocol_name String)   <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Con el fin de establecer una URLStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">objeto como un defecto, usted tiene que llamar setURLStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">de la clase URL. Este método tiene la siguiente sintaxis:    <span style="background-color: #c0c0c0; border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">setURLStreamHandlerFactory public static void (URLStreamHandlerFactory USHF)

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Anuncio en el **Listado 3** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">que el controlador <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y el xyURLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clases se colocan en el sun.net.www.protocol.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete. Esto ayuda a Java a encontrar automáticamente el controlador de protocolo y le ahorra la instalación de forma manual mediante una llamada al URL.setURLStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método y también se salva de la definición de un URLStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">fábrica.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">Normalmente, un controlador nuevo protocolo es específico de un nuevo protocolo, pero este artículo se utiliza una variante simplificada del protocolo HTTP llamado xy. El nuevo protocolo se identifica por un nuevo tipo de dirección URL: <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">XY: X / / host [: puerto] / ruta / recurso

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">Cuidado con el controlador nuevo protocolo sólo reconoce el controlador de contenido definido en la primera parte de este artículo y el recurso sólo puede ser una. xy archivo.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Como puede ver, esta dirección URL es similar a la http:// ... <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">URL. La diferencia es que la URL comienza con el nombre del nuevo protocolo, xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y después de que el X <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">caracteres. El carácter "X" no significa nada (pero podría), que se utiliza simplemente como una excusa para ignorar la parseURL <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">método. La implementación predeterminada de este método no sabe cómo identificar el controlador de protocolo adecuado para esta URL. El controlador nuevo protocolo implementará el HTTP GET <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">comando para la transmisión de una petición al servidor y procesará la respuesta utilizando el controlador de contenido desarrollado en **la Parte 1** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. El servidor HTTP utilizado en este ejemplo, HTTPServer.java<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">, se desarrolló también en **la Parte 1**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Ahora, el controlador de protocolo está listo! <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para probarlo, utiliza el TestProtocolHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase se muestra en **el Listado 4**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Tenga en cuenta que si usted no coloque el controlador <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">y xyURLConnection <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clases en el sun.net.www.protocol.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">paquete, usted tiene que borrar los comentarios de la PersonalStreamHandlerFactory <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase y de la línea en el método principal que representa la instalación manual. Eso es porque, en este caso, Java no encontrar ningún controlador de protocolo adecuado en la búsqueda automática.

<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para probar el controlador de protocolo de nuevo en una sola máquina, tiene que ser el primero asegurarse de que todos los archivos están en sus lugares apropiados. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">En el C: \ Jeditor \ controladores <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">de la guía:


 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">archivo
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Las clases para el HTTPServer <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Las clases para el TestProtocolHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">En el sun.net.www.content.image paquete:

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;">En la sun.net.www.protocol.xy paquete:
 * <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El xy.class <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">clase

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;"> El controlador de clase

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%;"> El xyURLConnection clasePor supuesto, en el caso de poner el controlador de protocolo y de contenido en el directorio de los controladores, tienes que modificar mediante la eliminación de la sun.net.www ... paquetes de la ruta).  <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Después de eso, todo lo que tienes que hacer es ejecutar el servidor HTTP y el TestProtocolHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación. La dirección URL para las pruebas de este ejemplo es xy: X / / localhost / image.xy <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">establecido en la TestProtocolHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">aplicación.

<span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Para ver la diferencia entre un cliente de Internet que no entiende la URL anterior y su TestProtocolHandler <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">cliente, puede ejecutar tanto. El resultado puede parecerse a **<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">la Figura 1 ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">:



<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Obviamente, el Internet Explorer no puede mostrar la imagen porque no entiende este tipo de URL.

=== <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Vamos a ponerlo todo junto ===

<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">También hay tres pasos para crear su propio controlador de protocolo:



<span style="color: #000000; display: block; font-family: Arial,Helvetica,sans-serif; font-size: 14px; text-align: center;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Figura 2. ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">La relación entre los tres getContenido métodos. El URL.getContent,

<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">URLConnection.getContent y ContentHandler.getContent. <span style="color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px;">**<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Nota: ** <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Recuerde que un controlador de protocolo en relación con un manejador de contenido, así que, usted tiene que saber lo que los controladores de contenido son y cómo funcionan. <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Como se puede ver en **la Figura 2**, el punto de partida de la discusión es la clase URL. Más precisamente, el objeto URL indica el recurso que se tiene acceso. En el TestProtocolHandler ejemplo, la dirección se especifica como esto: <span style="background-color: #c0c0c0; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;">URL url = new URL ("XY: X / / localhost / image.xy");   <span style="font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 21px;"><span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; margin: 0cm; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;"><span style="font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; margin: 0cm;">xy: X / / localhos t / image.xy camino es analizada por la clase URL sólo para extraer el nombre del protocolo. En este caso, el resultado del análisis indica laxy protocolo, un protocolo desconocido total. Después de la clase URL descubre el nombre del protocolo, se localiza el controlador de protocolo adecuado, examinando lassun.net.www.protocol ... paquetes. Debido a que el xy el protocolo no tiene un controlador de protocolo por defecto, hay dos soluciones para ayudar a la clase URL para encontrar el xy controlador de protocolo: <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">El TestProtocolHandler ejemplo implementa las soluciones de ambos.
 * <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Ponga el xy controlador de protocolo en el sun.net.www.protocol.xy paquete (para una instalación automática).
 * <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Llame createURLStreamHandler y setURLStreamHandlerFactory (para una instalación manual).

== <span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Fuerte red de soporte de aplicaciones ==

<span style="border-bottom: windowtext 1pt; border-left: windowtext 1pt; border-right: windowtext 1pt; border-top: windowtext 1pt; color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 14px; line-height: 150%; padding-bottom: 0cm; padding-left: 0cm; padding-right: 0cm; padding-top: 0cm;">Manejadores de contenido y el protocolo son sólo un aspecto de fuerte soporte de aplicaciones Java de la red. Puede usar los controladores de contenido y el protocolo para crear su propio navegador de Internet-y no sólo un navegador de Internet para los protocolos ya conocidos, pero un navegador de Internet en apoyo a sus propios protocolos.