Aprenda Servlets de Java, como si estuviera en primero

download Aprenda Servlets de Java, como si estuviera en primero

of 69

description

Servlets de Java.

Transcript of Aprenda Servlets de Java, como si estuviera en primero

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    SanSebastin,

    Abril1999

    Aprenda Servlets de Javacomo si estuviera en primero

    Javier Garca de Jaln Jos Ignacio Rodrguez Aitor Imaz

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Aprenda Sevlets de Javacomo si estuviera en primero

    Javier Garca de Jaln

    Jos Ignacio Rodrguez

    Aitor Imaz

    Perteneciente a la coleccin : Aprenda , como si estuviera en primero

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    NDICE

    1 I nt roduccin...............................................................................................................................31.1 Introduccin a Internet/Intranet ...............................................................................................31.1.1 Introduccin histrica........................................................................................................................31.1.2 Redes de ordenadores........................................................................................................................31.1.3 Protocolo TCP/IP..............................................................................................................................41.1.4 Servicios............................................................................................................................................4

    1.1.4.1 Correo electrnico...............................................................................................................41.1.4.2 Ejecutar comandos en ordenadores remotos (Telnet) ......................................................... 51.1.4.3 Transferencia de ficheros (Ftp) ................................................... ........................................ 51.1.4.4 World Wide Web................................................................................................................51.1.4.5 Grupos de discusin (News) ....................................................... ........................................ 6

    1.2 Protocolo HTTP y lenguaje HTML...........................................................................................61.3 URL (Uniform Resource Locator).............................................................................................7

    1.3.1 URLs del protocolo HTTP................................................................................................................81.3.2 URLs del protocolo FTP...................................................................................................................91.3.3 URLs del protocolo correo electrnico (mailto) ........................................................... .................... 91.3.4 URLs del protocolo News (NNTP)...................................................................................................91.3.5 URLs del protocolo Telnet................................................................................................................91.3.6 Nombres especficos de ficheros.............. ........................................................... ............................ 10

    1.4 Clientes y Servidores.................................................................................................................101.4.1 Clientes (clients)..............................................................................................................................101.4.2 Servidores (servers).........................................................................................................................11

    1.5 Tendencias Actuales para las aplicaciones en Internet .........................................................112 Diferencias entr e las tecnologas CGI y Servlet .....................................................................14

    3

    Caractersticas de los servlets..................................................................................................15

    4 JSDK 2.0 ..................................................................................................................................154.1 Visin general del API de JSDK 2.0........................................................................................164.2 La aplicacin servletrunner .....................................................................................................184.3 Ficheros de propiedades ...........................................................................................................184.4 Ejecucin de la aplicacin servletrunner................................................................................19

    5 Ejemplo I ntroductor io .............................................................................................................195.1 Instalacin del Java Servlet Development Kit (JSDK 2.0)....................................................205.2 Formulario.................................................................................................................................21 5.3 Cdigo del Servlet......................................................................................................................23

    6 El Servlet API 2.0 ....................................................................................................................266.1 El ciclo de vida de un servlet: clase GenericServlet...............................................................27

    6.1.1 El mtodo init() en la clase GenericServlet.....................................................................................286.1.2 El mtodo service() en la clase GenericServlet...............................................................................296.1.3 El mtodo destroy() en la clase GenericServlet: forma de terminar ordenadamente.......................30

    6.2 El contexto del servlet (servlet context)...................................................................................326.2.1 Informacin durante la inicializacin del servlet.............................................................................326.2.2 Informacin contextual acerca del servidor ........................................................ ............................ 32

    6.3 Clases de utilidades (Utility Classes) .......................................................................................336.4 Clase HttpServlet: soporte especfico para el protocolo HTTP............................................34

    6.4.1 Mtodo GET: codificacin de URLs ........................................................ ...................................... 346.4.2 Mtodo HEAD: informacin de ficheros .................................................. ...................................... 366.4.3 Mtodo POST: el ms utilizado ...................................................... ................................................ 366.4.4 Clases de soporte HTTP..................................................................................................................36

    6.4.5 Modo de empleo de la clase HttpServlet.........................................................................................387 Formas de segui r la tr ayector ia de los usuar ios (clientes).....................................................40

    7.1 Cookies .......................................................................................................................................407.1.1 Crear un objeto Cookie ......................................................... .......................................................... 41

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 2

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    7.1.2 Establecer los atributos de la cookie ......................................................... ...................................... 427.1.3 Enviar la cookie ........................................................... ........................................................... ........ 427.1.4 Recoger las cookies.........................................................................................................................437.1.5 Obtener el valor de la cookie .......................................................... ................................................ 43

    7.2 Sesiones (Session Tracking)......................................................................................................447.3 Reescritura de URLs.................................................................................................................45

    8 Formas de ejecutar un servlet .................................................................................................479 Acceso a bases de datos mediante servlets y JDBC ................................................................48

    9.1 Ejemplo 1: Escribir en una base de datos Microsoft ACCESS 97 .......................................499.2 Ejemplo 2: Consultar una base de datos con Access 97 ........................................................54

    10 Anexo: I ntr oduccin a SQL (Structu red Query Language) ..................................................6110.1 Reglas sintcticas.......................................................................................................................6110.2 Ejecucin de sentencias SQL....................................................................................................61

    10.2.1Tipos de datos SQL y equivalencia.................................................................................................6210.2.2Creacin de tablas...........................................................................................................................6210.2.3Recuperacin de informacin..........................................................................................................63

    10.2.4Almacenar informacin...................................................................................................................6510.2.5Eliminacin de datos.......................................................................................................................6510.2.6Actualizacin de datos .......................................................... .......................................................... 65

    10.3 Sentencias SQL con Microsoft Access.....................................................................................66

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    1 INTRODUCCIN

    1.1 INTRODUCCIN A INTERNET/INTRANET

    1.1.1 Introduccin histrica

    La red Internet es hoy da la red de ordenadores ms extensa del planeta. Para ser ms precisos,Internetes una red que enlaza centenares de miles de redes locales heterogneas .

    En 1990, Tim Berners-Lee, un joven estudiante del Laboratorio Europeo de Fsica dePartculas (CERN) situado en Suiza, desarroll un nuevo sistema de distribucin de informacin enInternetbasado en pginas hipertexto, al que denomin World Wide Web(La telaraa mundial).La revolucin de la Webhaba comenzado.

    Realmente, el concepto de documento hipertexto no es nuevo: fue introducido por TedNelsonen 1965 y bsicamente se puede definir como texto de recorrido no secuencial. Clicando enlas palabras con enlaces(links) se puede acceder al documento al que apuntan, que normalmentecontiene una informacin ms detallada sobre el concepto representado por las palabras del enlace.De ordinario, las palabras del enlace aparecen subrayadas y de un color diferente al del resto deldocumento, para que puedan diferenciarse fcilmente. Una vez que han sido clicadas cambian decolor, para indicar que el documento al que apuntan ya ha sido visitado. Lo realmente novedoso dela Webes la aplicacin del concepto de hipertextoa la inmensa base de informacin accesible atravs de Internet.

    Por otra parte, lo que inicialmente se haba concebido como un sistema de pginas hipertexto,se ha convertido posteriormente en un verdadero sistema

    hipermedia, en el que las pginas

    permiten acceder a imgenes, sonidos, videos, etc. Ello ha incrementado an ms el atractivo de laWeb.

    Adems de Internet, existen en la actualidad numerosas Intranets, es decir redes basadas enlos mismos concepto de hipertexto e hipermedia y en las mismas tecnologas que Internet, perocon un mbito mucho ms limitado. Por lo general, las Intranets se reducen al marco de unaempresa, de una institucin, de un centro educativo, etc. En general carecen de inters para otrosusuarios del exterior, por el tipo de informacin que ofrecen. Por ejemplo, la Webde alumnos de laESIISS puede ser considerada como una Intranet: la informacin sobre asignaturas, horarios,exmenes, etc. no tiene gran inters para usuarios que no sean alumnos de la Escuela. De ah que

    est orientada a un uso interno. Esto no quiere decir que su acceso est prohibido o restringido parausuarios externos: de hecho no lo est. Sin embargo, a diferencia de las Intranetsuniversitarias, lasIntranetsempresariales s que suelen tener limitados los accesos externos.

    1.1.2 Redes de ordenadores

    Una red es una agrupacin de computadores. Mediante una red, se posibilita el intercambio deinformacin entre ordenadores de un modo eficiente y transparente. Una red permite ver los discosde otros ordenadores como si fueran discos locales. Segn sea la estructura de dicha agrupacin, osegn el nmero de ordenadores integrados en ella se pueden establecer diferentes clasificaciones:

    Red Local(LAN: Local Area Network). De ordinario es una red dentro de un mismo edificio,como por ejemplo las redes de alumnos o de profesores de la ESIISS.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 4

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Red de campus(CAN: Campus Area Network). Es una red que une distintos edificios dentro deuna zona geogrfica limitada, por ejemplo el campus de una universidad. De ordinario todos loscables por los que circula la informacin son privados.

    Red de ciudad (MAN: Metropolitan Area Network). Se trata de una red que une distintosedificios dentro de un rea urbana. En la transmisin de la informacin interviene ya unaempresa de telecomunicaciones, que podra ser de mbito local o regional.

    Red de rea extensa (WAN: Wide Area Network). En este caso la red puede unir centrosdispersos en una zona geogrfica muy amplia, en ocasiones por todo el mundo. Es la red tpicade las empresas multinacionales. En la transmisin de la informacin debern intervenirmltiples empresas de telecomunicaciones, como por ejemplo Euskaltel, Telefnica, BT, ATT,etc.Internet puede ser considerada como la WAN ms conocida y extensa que existe en laactualidad.

    Hay que mencionar la jerarqua y estructuracin existente en las redes: unos ordenadores

    poseen unos derechos que otros no poseen (tienen accesos a archivos a los que otros no puedenacceder, los ordenadores con ms jerarquapueden controlar a los de menor rango, etc.).

    1.1.3 Protocolo TCP/IP

    Lo que permite que ordenadores remotos con procesadores y sistemas operativos diferentes seentiendan y en definitiva que Internetfuncione como lo hace en la actualidad, es un conjunto deinstrucciones o reglas conocidas con el nombre de protocolo. La Internetutiliza varios protocolos,

    pero los que estn en la base de todos los dems son el Transport Control Protocol (TCP) y elllamado InternetProtocol(I P), o en definitiva TCP/IPpara abreviar. Se trata de una serie de reglas

    para mover de un ordenador a otro los datos electrnicos descompuestos en paquetes, asegurndosede que todos los paquetes llegan y son ensamblados correctamente en su destino. Todos losordenadores en Internet utilizan el protocolo TCP/IP, y gracias a ello se consigue eliminar la

    barrera de la heterogeneidad de los ordenadores y resolver los problemas de direccionamiento.

    1.1.4 Servicios

    Sobre la base la infraestructura de transporte de datos que proporciona el protocolo TCP/IPse hanconstruido otros protocolos ms especficos que permiten por ejemplo enviar correo electrnico(SMTP), establecer conexiones y ejecutar comandos en mquinas remotas (TELNET), acceder aforos de discusin o news (NNTP), transmitir ficheros (FTP), conectarse con un servidor web

    (HTTP), etc. A estas capacidades de Internetse les llama servicios. A continuacin se revisan losms conocidos.

    1.1.4.1 Correo electrnico

    El correo electrnico o e-mailpermite mantener correspondencia con usuarios en cualquier parte delmundo. Respecto al correo tradicional tiene la ventaja de que es mucho ms rpido y sencillo deutilizar: es una manera muy fcil de enviar o recibir mensajes y ficheros, con el consiguiente ahorrode papel, lo que tambin supone una ventaja ecolgica.

    El correo electrnico tiene tambin ventajas econmicas: es ms barato que los servicioscomerciales y carece de sobrecargas por larga distancia, siendo a su vez rpido y efectivo en el

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 5

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    coste. El protocolo que se utiliza para el correo es el llamado SMTP (Simple Mail TransferProtocol).

    1.1.4.2 Ejecutar comandos en ordenadores remotos (Telnet)

    Mediante Telnet es posible conectarse a un ordenador remoto en el que se tiene una cuenta deusuario o simplemente que est abierto a cualquier usuario. Tradicionalmente Telnetse ha utilizado

    para acceder a servicios de bases de datos y catlogos de bibliotecas. Telnetabre la posibilidad deconectarse a una cuenta remota gracias a Internet. El servicio Telnet hace que se pueda estarconectado a un servidor remoto mediante una consola Uni (en cierta forma similar a la de MS-DOS), de igual manera que si la conexin se realizara en el propio ordenador. Todo lo que seescribe desde un teclado es redireccionado al ordenador remoto. De igual manera todo lo que elordenador remoto devuelva como respuesta es redireccionado al monitor del usuario. No importa ladistancia que haya entre ambos.

    A diferencia del e-mail, Telnet establece una conexin permanente y sncrona entre losordenadores cliente y servidor, conexin que permanece hasta que explcitamente es cortada por unade las dos partes.

    1.1.4.3 Transferencia de ficheros (Ftp)

    El servicio F tp(F il e Transfer Protocol) es una parte importante de Internet. F tppermite transferirbidireccionalmente cualquier tipo de archivos con cualquiera de los miles de ordenadores remotosque tengan un servidor Ftp. Se pueden transferir archivos ejecutables, de grficos, sonido, vdeo ocualquier otro tipo. Al igual que Telnet, Ftp establece conexiones sncronas y permanentes. Parautilizar el servicio F tpsuele ser necesario proporcionar un nombre de usuari oy un password.

    Es muy frecuente encontrar servidores F tp abiertos a todo el mundo y que permiten slolectura de ficheros (no escritura). Muchas empresas como Microsoft, Sun, Netscape, etc. utilizaneste sistema para distribuir software y utilidades gratuitas. En ocasiones, para conectarse a este tipode servicio hay que dar como nombre de usuario la palabra anonymous, y como password la propiadireccin de correo electrnico.

    1.1.4.4 World Wide Web

    La World Wide Web, o simplemente Web, es el sistema de informacin ms completo y actual, queune tanto elementos multimedia como hipertexto. De hecho, tomando el todo por la parte, conmucha frecuencia la Webse utiliza como sinnimo de Internet.

    El World Wide Web (WWW)es el resultado de cuatro ideas o factores:

    1. La idea de Internety los protocolos de transporte de informacin en que est basada.

    2. La concepcin de Ted Nelson de un sistema de hipertexto, extendida a la red.

    3. La idea de programas clienteque interaccionan con programas servidorescapaces de enviar lainformacin en ellos almacenada. Para la Web, esto se hace mediante el protocolo HTTP(HyperText Transfer Protocol).

    4. El concepto de lenguaje anotado (Markup language) y ms en concreto del lenguaje HTML (HyperTextMarkupLanguage), que no se explicar en este documento, pero del que conviene

    tener una cierta idea (ver http://jgjalon.ceit.es/Ayudainf/CursoHTML/Curso01.htm).

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 6

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    HTML es una herramienta fundamental de Internet. Gracias al hipertexto, desde una pginaWeb se puede acceder a cualquier otra pgina Webalmacenada en un servidor HTTP situado encualquier parte del mundo. Todo este tipo de operaciones se hacen mediante un programa llamadobrowsero navegador, que bsicamente es un programa que reconoce el lenguaje HTML, lo procesa

    y lo representa en pantalla con el formato ms adecuado posible..Hoy en da pueden encontrarse Webs relacionadas con cualquier rea de la sociedad:

    educacin, empresa, negocios, poltica, msica, ocio, deportes, etctera.

    1.1.4.5 Grupos de discusin (News)

    Los newsgroupso grupos de discusin son foros globales para la discusin de temas especficos.Son utilizados con el fin de discutir (en el buen sentido de la palabra) e intercambiar informacin,que versa sobre gran riqueza y variedad de temas. Estas discusiones suelen ser pblicas, es decir,accesibles por personas de todo el mundo interesadas en el tema. Las discusiones pueden ser libres

    (cada usuario que desea intervenir lo hace sin limitacin alguna) o moderadas (un moderadordecide si las intervenciones se incluyen o no).

    1.2 PROTOCOLO HTTPY LENGUAJE HTML

    Anteriormente se ha visto lo que son los protocolos de Internety algunos de sus servicios. Por lovisto hasta el momento, se pueden enviar/recibir ficheros de cualquier tipo entre ordenadoresconectados a Internet, se puede enviar correo electrnico, se puede conectar a un servidor remoto yejecutar comandos, etc. Sin embargo, ninguno de esos servicios permiten la posibilidad de colaboraren la creacin de un entorno hipertexto e hipermedia, es decir, no se pueden pedir datos a unordenador remoto para visualizarlos localmente utilizando TCP/IP. Es por ello que en 1991 se creel protocolo llamado HTTP(HyperText Transport Protocol).

    Una de las caractersticas del protocoloHTTPes que no es permanente, es decir, una vez queel servidor ha respondido a la peticin del cliente la conexin se pierde y el servidor queda enespera, al contrario de lo que ocurre con los servicios de f tpo telnet, en los cuales la conexin es

    permanente hasta que el usuario o el servidor transmite la orden de desconexin. La conexin nopermanente tiene la ventaja de que es ms difcil que el servidor se colapse o sature, y elinconveniente de que no permite saber que es un mismo usuario el que est realizando diversasconexiones (esto complica la seguridad cuando los accesos se hacen con password, pues no se

    puede pedir el password cada vez que se realiza una conexin para pedir una nueva pgina; elpassword slo se debera pedir la primera vez que un usuario se conecta).

    Se llama mantener la sesin a la capacidad de un servidor HTTP y de sus programasasociados para reconocer que una determinada solicitud de un servicio pertenece a un usuario que yahaba sido identificado y autorizado. Esta es una caracterstica muy importante en todos los

    programas de comercio electrnico.

    La ventaja del protocolo HTTP es que se pueden crear recursos multimedia localmente,transferirlos fcilmente a un servidor remoto y visionarlos desde donde se han enviado o desdecualquier otro ordenador conectado a la red. El protocolo HTTPes una herramienta muy poderosa,que constituye la esencia del World Wide Web.

    Ya se ha dicho que para la creacin de las pginas Web en Internet se utiliza el lenguajeHTML (HyperText M arkup L anguage). Es un lenguaje muy simple, cuyo cdigo se puede escribir

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 7

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    con cualquier editor de texto como Notepad, Wordpad o Word. Se basa en comandos o tagsreconocibles por el browser y que van entre los smbolos ''. Como tutorial introductorio puedeutilizarse el contenido en la direccin http://jgjalon.ceit.es/Ayudainf/CursoHTML/Curso01.htm.

    El lenguaje HTML es tan importante que se han creado muchos editores especiales, entre losque destaca M icrosoft F rontPage 98. Adems, las aplicaciones ms habituales (tales como Word,Excel y PowerPoint) tienen posibilidad de exportar ficheros HTML . No es pues nada difcilaprender a crear pginas HTML .

    1.3 URL(UNIFORM RESOURCE LOCATOR)

    Todo ordenador en Internety toda persona que use Internettiene su propia direccin electrnica(I P address). Todas estas direcciones siguen un mismo formato. Para el ayudante Pedro Gmez, dela Escuela Superior de Ingenieros Industriales de San Sebastin, su direccin podra ser:

    [email protected]

    donde pgomezes el identificador ID o nombre de usuario que Pedro utiliza para conectarse a la red.Es as como el ordenador le conoce. La parte de la direccin que sigue al smbolo de arroba(@)identifica al ordenador en el que est el servidor de correo electrnico. Consta de dos partes: elnombre del ordenador o host, y un identificador de la red local de la institucin, llamado dominio.En este caso el ordenador se llama gaviotay el dominio es ceit.es, que identifica a las redes de laESIISS y del Centro de Estudios e Investigaciones Tcnicas de Guipzcoa (ceit), en Espaa (es).

    Nunca hay espacios en blanco en una direccin de Internet.

    El nombre del servidor oI P address est dividido en este caso en tres campos que se leen dederecha a izquierda. El primer campo por la derecha es el identificador del pas o, en el caso de

    EEUU, del tipo de institucin. Entre los posibles valores de este campo se pueden encontrar lossiguientes (utilizados como se ha dicho en Estados Unidos): com (organizaciones y empresascomerciales), gov (gobierno), int(organizacin internacional), mi l (militar), net (organizacin deredes) y org(organizaciones sin nimo de lucro).

    Fuera de Estados Unidos el campo de la derecha se refiere al estado o pas al que pertenece elservidor, como por ejemplo:

    at: Austria au: Australiaca: Canad ch: Suizade: Alemania dk: Dinamarcaes: Espaa fi: Finlandia

    fr: Francia gr: Greciajp: Japn uk: Reino Unido

    En realidad los ordenadores no se identifican mediante un nombre, sino mediante un nmero:el llamado nmero o direccinI P, que es lo que el ordenador realmente entiende. Los nombres son

    para facilitar la tarea a los usuarios, ya que son ms fciles de recordar y de relacionar con lainstitucin. Por ejemplo el nmero que corresponde al servidor gaviota.ceit.eses 193.145.249.23.Es evidente que es ms fcil recordar el nombre que la direccin IP. En Internet existen unosservidores especiales, llamados servidores de nombres o de direcciones, que mantienen unas tablasmediante las que se puede determinar la direccin I P a partir del nombre.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 8

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    As pues, ques exactamente un URL? Pues podra concebirse como la extensin delconcepto de nombre completo de un archivo (path). Mediante un URL no slo puede apuntarse a unarchivo en un directorio en un disco local, sino que adems tal archivo y tal directorio pueden estarlocalizados de hecho en cualquier ordenador de la red, con el mismo o con distinto sistema

    operativo. Las URLsposibilitan el direccionamiento de personas, ficheros y de una gran variedad deinformacin, disponible segn los distintos protocolos o servicios de Internet. El protocolo msconocido es el HTTP, pero FTPy las direcciones de e-mail tambin pueden ser referidas con unURL . En definitiva, un URL es como la direccin completa de un determinado servicio:

    proporciona todos los datos necesarios para localizar el recurso o la informacin deseada.

    En resumen, un URL es una manera conveniente y sucinta de referirse a un archivo o acualquier otro recurso electrnico.

    La sintaxis genrica de los URLses la que se muestra a continuacin:mtodo://servidor.dominio/ruta-completa-del-fichero

    donde mtodoes una de las palabras que describen el servicio: http, ftp, news, Enseguida se verla sintaxis especfica de cada mtodo, pero antes conviene aadir unas breves observaciones:

    En ocasiones elURLempleado tiene una sintaxis como la mostrada, pero acabada con una barra(/). Esto quiere decir que no se apunta a un archivo, sino a un directorio. Segn como estconfigurado, el servidor devolver el ndice por defecto de ese directorio (un listado de archivosy subdirectorios de ese directorio para poder acceder al que se desee), un archivo por defectoque el servidor busca automticamente en el directorio (de ordinario llamado Index.htm o

    Index.html) o quizs impida el acceso si no se conoce exactamente el nombre del fichero al quese quiere acceder (como medida de seguridad).

    Cmo presentar un URL a otros usuarios? Se suele recomendar hacerlo de la siguiente manera:

    para distinguir as los URLsde los URIs(Unif orm Resource I denti fi cation), que representanun concepto similar pero no idntico.

    A continuacin se muestran las distintas formas de construir los URLs segn los distintosservicios de Internet:

    1.3.1 URLs del protocolo HTTP

    Como ya se ha dicho, HTTPes el protocolo especficamente diseado para la World Wide Web. Su

    sintaxis es la siguiente:http://:/

    donde hostes la direccin del servidor WWW, el puertoindica a travs de que "entrada" el servidoratiende los requerimientos HTTP(puede ser omitido, en cuyo caso se utiliza el valor por defecto,80), y la ruta indica al servidor el path del fichero que se desea cargar (el pathes relativo a undirectorio raz indicado en el servidor HTTP).

    As, por ejemplo, http://www.msn.com/index/prev/welcome.htmaccede a la Webde MicrosoftNetwork, en concreto al archivo welcome.htm(cuya ruta de acceso es index/prev).

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 9

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    1.3.2 URLs del protocolo FTP

    La sintaxis especfica del protocolo f tpes la siguiente:ftp://:@://///

    Los campos usuarioy passwordslo son necesarios si el servidor los requiere para autorizarel acceso; en otro caso pueden ser omitidos; host es la direccin del ordenador en el que se estejecutando el servidor f tp; el puerto,como antes, es una informacin que puede ser omitida (pordefecto suele ser el 21); la serie de argumentos // son los comandos que elcliente debe ejecutar para moverse hasta el directorio en el que reside el documento; nombrees elnombre del documento que se desea obtener.

    As, por ejemplo, ftp://www.msn.com/index/prev/welcome.htmtraer el fichero welcome.htm(cuya ruta de acceso esindex/prev) del servidor f tpde M icrosoft Network.

    1.3.3 URLs del protocolo correo electrnico (mailto)

    La sintaxis del correo electrnico difiere bastante de las anteriores, y es como sigue:mailto:

    siendo cuenta@dominiola direccin de correo electrnico a la cual se desea enviar un mensaje. Porejemplo, mailto:[email protected] un mensaje a Pedro Gmez, en el CEIT, en Espaa. En estecaso se ha omitido el nombre del ordenador que contiene el servidor de correo electrnico. Unainstitucin puede definir un servidor de correo electrnico por defecto, y en ese caso no hace faltaincluir su nombre. Si en esa institucin hay ms servidores de correo electrnico habr queespecificar el nombre del ordenador (por ejemplo, [email protected]).

    Cuando en las pginas HTML de una web se quiere introducir una direccin de correoelectrnico se utiliza este tipo de URL (ver por ejemplo las portadas o pginas de entrada de laswebsde I nf ormtica 1 y2).

    1.3.4 URLs del protocolo News (NNTP)

    Para acceder a un grupo de noticias o news, se utiliza una direccin de un servidor segn elesquema siguiente:

    news:

    donde grupo_de_news-nombre es el nombre del grupo de news, de Usenet (por ejemplo,comp.infosystems.www.providers), que generalmente indicar al lector de news(los browsers como

    Netscape Navigator suelen tener un lector de news incorporado) los artculos disponibles en esegrupo de news. Si este parmetro fuese un asterisco *, el URL se referira a todos los newsgroupsque estn operativos. Hay que tener en cuenta que un cliente o lector de news debe estar bienconfigurado para saber dnde obtener artculos o grupos de news, (normalmente de un servidorespecfico NNTP, tal como news.cti.unav.es; en Netscape Navigator esta configuracin se hace enel cuadro de dilogo que se abre con Edi t/Preferences/Mail& NewsGroups).

    1.3.5 URLs del protocolo Telnet

    El URL necesariopara crear una sesin Telnet en un servidor remoto en Internet, se definemediante el protocolo Telnet. Su sintaxis es la siguiente:

    telnet://:@:/

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 10

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    donde los parmetros user y password pueden ser omitidos si el servidor no los requiere, hostidentificar al ordenador remoto con el que se va a realizar la conexin y portdefine el puerto por elque dicho servidor atiende los requerimientos de servicios Telnet (puede ser igualmente omitido,siendo su valor por defecto 23).

    1.3.6 Nombres especficos de ficheros

    Es `posible acceder tambin directamente a un fichero concreto mediante el URL del mtodo f i le,que supone que dicho fichero puede ser obtenido por un cliente. Esto suele confundirse con elservicio f tp. La diferencia radica en que f tpes un servicio especfico para la transmisin de ficheros,mientras que f i le deja la forma de traer los ficheros a la eleccin del cliente, que en algunascircunstancias, bien podra ser el mtodo f tp. La sintaxis para el mtodo f i lees la que se muestra acontinuacin:

    file:///

    Como siempre, hostes la direccin del servidor y ruta-de-accesoes el camino jerrquico paraacceder al documento (con una estructura directorio/directorio//nombre del archivo). Si elparmetro host se deja en blanco, se supondr por defecto localhost, es decir, que se van a traerficheros del propio ordenador.

    1.4 CLIENTES Y SERVIDORES

    1.4.1 Clientes (clients)

    Por su versatilidad y potencialidad, en la actualidad la mayora de los usuarios de Internetutilizan

    en sus comunicaciones con los servidores de datos, los browserso navegadores. Esto no significaque no puedan emplearse otro tipo de programas como clientes e-mail, news, etc. para aplicacionesms especficas. De hecho, los browsers ms utilizados incorporan lectores de mail y de news.

    En la actualidad los browsers ms extendidos son Netscape Communicator y MicrosoftI nternet Explorer. En el momento de escribir estas notas (abril 1999), el primero est en la versin4.51 y el segundo en la 5.0. Ambos acaparan una cuota de mercado que cubre prcticamente a todoslos usuarios.

    A pesar de que ambos cumplen con la mayora de los estndares aceptados en la Internet,cada uno de ellos proporciona soluciones adicionales a problemas ms especficos. Por este motivo,muchas veces ser necesario tener en cuenta qu tipo de browser se va a comunicar con un servidor,

    pues el resultado puede ser distinto dependiendo del browser empleado, lo cual puede dar lugar aerrores.

    Ambos browsers soportan Java, lo cual implica que disponen de una Java Vi rtual Machineen la que se ejecutan los ficheros * .classde las Appletsque traen a travs de Internet. Netscape esms fiel al estndar de Javatal y como lo define Sun, pero ambos tienen la posibilidad de sustituirla Java Vi rtual Machinepor medio de un mecanismo definido por Sun, que se llama Java Plug-in(los plug-ins son aplicaciones que se ejecutan controladas por los browsers y que permiten extendersus capacidades, por ejemplo para soportar nuevos formatos de audio o video).

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 11

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    1.4.2 Servidores (servers)

    Los servidores son programas que se encuentran permanentemente esperando a que algn otroordenador realice una solicitud de conexin. En un mismo ordenador es posible tenersimultneamente servidores de los distintos servicios anteriormente mencionados (

    HTTP,FTP

    ,TELNET, etc.). Cuando a dicho ordenador llega un requerimiento de servicio enviado por otroordenador de la red, se interpreta el tipo de llamada, y se pasa el control de la conexin al servidorcorrespondiente a dicho requerimiento. En caso de no tener el servidoradecuado para responder a lacomunicacin, est ser rechazada. Un ejemplo de rechazo ocurre cuando se quiere conectar a travsde TELNET(tpico de los sistemas UNIX) con un ordenador que utilice Windows 95/98.

    Como ya se ha apuntado, no todos los servicios actan de igual manera. Algunos, comoTELNETy FTP, una vez establecida la conexin, la mantienen hasta que el cliente o el servidorexplcitamente la cortan. Por ejemplo, cuando se establece una conexin con un servidor de FTP,los dos ordenadores se mantienen en contacto hasta que el cliente cierre la conexin mediante el

    comando correspondiente (quit, exit, ) o pase un tiempo establecido en la configuracin delservidor FTPo del propio cliente, sin ninguna actividad entre ambos.

    La comunicacin a travs del protocolo HTTPes diferente, ya que es necesario establecer unacomunicacin o conexin distinta para cada elemento que se desea leer. Esto significa que en undocumento HTML con 10 imgenes son necesarias 11 conexiones distintas con el servidor HTTP,esto es, una para el texto del documento HTML con las tagsy las otras 10 para traer las imgenesreferenciadas en el documento HTML .

    La mayora de los usuarios de Internetson clientesque acceden mediante un browsera losdistintos servidor es WWWpresentes en la red. El servidor no permite acceder indiscriminadamentea todos sus ficheros, sino nicamente a determinados directorios y documentos previamente

    establecidos por el administradorde dicho servidor.

    1.5 TENDENCIAS ACTUALES PARA LAS APLICACIONES EN INTERNET

    En la actualidad, la mayora de aplicaciones que se utilizan en entornos empresariales estnconstruidos en torno a una arquitectura cliente-servidor, en la cual uno o varios computadores(generalmente de una potencia considerable) son los servidores, que proporcionan servicios a unnmero mucho ms grande de clientesconectados a travs de la red. Los clientessuelen ser PCs de

    propsito general, de ordinario menos potentes y ms orientados al usuario final. A veces losservidores son intermediarios entre los clientes y otros servidores ms especializados (por ejemplo

    los grandes servidores de bases de datos corporativos basados en mainframesy/o sistemas Unix. Enesta caso se habla se aplicaciones de varias capas).

    Con el auge de Internet, la arquitectura cliente-servidor ha adquirido una mayor relevancia,ya que la misma es el principio bsico de funcionamiento de la World Wide Web: un usuario quemediante un browser(cliente) solicita un servicio (pginas HTML , etc.) a un computador que hacelas veces de servidor. En su concepcin ms tradicional, los servidores HTTPse limitaban a enviaruna pgina HTML cuando el usuario la requera directamente o clicaba sobre un enlace. Lainteractividad de este proceso era mnima, ya que el usuario poda pedir ficheros, pero no enviar susdatos personales de modo que fueran almacenados en el servidor u obtuviera una respuesta

    personalizada. La Figura 1 representa grficamente este concepto.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 12

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Desde esa primera concepcin del servidor HTTPcomo mero servidor de ficheros HTML elconcepto ha ido evolucionando en dos direcciones complementarias:

    1. Aadir ms inteligencia en el servidor, y

    2. Aadir ms inteligencia en el cliente.

    Las formas ms extendidas de aadir inteligencia a los clientes (a las pginas HTML ) hansido Javascripty las applets de Java. Javascriptes un lenguaje relativamente sencillo, interpretado,cuyo cdigo fuente se introduce en la pgina HTML por medio de los tags

    ; su nombre deriva de una cierta similitud sintctica con Java. Las applets de Javatienen u mucha ms capacidad de aadir inteligencia a las pginas HTML que se visualizan en elbrowser, ya que son verdaderas clases de Java(ficheros * .class) que se cargan y se ejecutan en elcliente. Sobre las posibilidades de las applets de Javapuede consultarse el manual Aprenda Javacomo si estuviera en Primero.

    De cara a estos apuntes tienen mucho ms inters los caminos seguidos para aadir msinteligencia en el servidor HTTP. La primera y ms empleada tecnologa ha sido la de losprogramasCGI(Common Gateway I nterf ace), unida a los formularios HTML .

    Los formularios HTML permiten de alguna manera invertir el sentido del flujo de lainformacin. Cumplimentando algunos campos con cajas de texto, botones de opcin y de

    seleccin, el usuario puede definir sus preferencias o enviar sus datos al servidor. Un ejemplo deformulario bien conocido por los alumnos de la ESIISS es la ficha electrnica de I nf ormtica 1(http://www1.ceit.es/Asignaturas/Informat1/Curso9899/General/FichaInf1.htm). Cuando en unformulario HTML se pulsa en el botn Enviar (o nombre equivalente, como Submit) los datostecleados por el cliente se envan al servidor para su procesamiento.

    Cmo recibe el servidor los datos de un formulario y qu hace con ellos? ste es el problemaque tradicionalmente han resuelto los programas CGI. Cada formulario lleva incluido un campollamado Actioncon el que se asocia el nombre de programa en el servidor. El servidor arranca dicho

    programa y le pasa los datos que han llegado con el formulario. Existen dos formas principales depasar los datos del formulario al programa CGI:

    Cliente Servidor

    Solicita fichero HTML

    Proporciona fichero HTML

    Figura 1. Arquitectura cliente-servidor tradicional.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 13

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    1. Por medio de una variable de entorno del sistema operativo del servidor, de tipo String(mtodo GET)

    2. Por medio de un flujo de caracteres que llega a travs de la entrada estndar (stdin o

    System.in), que de ordinario est asociada al teclado (mtodo POST).En ambos casos, la informacin introducida por el usuario en el formulario llega en la forma

    de una nica cadena de caracteres en la que el nombre de cada campo del formulario se asocia conel valor asignado por el usuario, y en la que los blancos y ciertos caracteres especiales se hansustituido por secuencias de caracteres de acuerdo con una determinada codificacin. Ms adelantese vern con ms detenimiento las reglas que gobiernan esta transmisin de informacin. Encualquier caso, lo primero que tiene que hacer el programa CGI es decodificar esta informacin yseparar los valores de los distintos campos. Despus ya puede realizar su tarea especfica: escribir enun fichero o en una base de datos, realizar una bsqueda de la informacin solicitada, realizarcomprobaciones, etc. De ordinario, el programa CGI termina enviando al cliente (el navegador

    desde el que se envi el formulario) una pgina HTML en la que le informa de las tareas realizadas,le avisa de si se ha producido alguna dificultad, le reclama algn dato pendiente o malcumplimentado, etc. La forma de enviar esta pgina HTML al cliente es a travs de la salidaestndar (stduoto System.out), que de ordinario suele estar asociada a la pantalla. La pgina HTML tiene que ser construida elemento a elemento, de acuerdo con las reglas de este lenguaje. No bastaenviar el contenido: hay que enviar tambin todas y cada una de las tags. En un prximo apartado sever un ejemplo completo.

    En principio, los programas CGI pueden estar escritos en cualquier lenguaje deprogramacin, aunque en la prctica se han utilizado principalmente los lenguajes Perl1y C/C++.Un claro ejemplo de un programaCGIsera el de un formulario en el que el usuario introdujera sus

    datos personales para registrarse en un sitio web. El programaCGIrecibira los datos del usuario,introducindolos en la base de datos correspondiente y devolviendo al usuario una pgina HTML donde se le informara de que sus datos haban sido registrados. La Figura 2 muestra el esquema

    bsico de funcionamiento de los programas CGI.

    1

    PERL es un lenguaje interpretado procedente del entorno Unix (aunque tambin existe en Windows NT), congrandes capacidades para manejar texto y cadenas de caracteres.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 14

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Es importante resaltar que estos procesos tienen lugar en el servidor. Esto a su vez puederesultar un problema, ya que al tener mltiples clientes conectados al servidor, el programaCGI

    puede estar siendo llamado simultneamente por varios clientes, con el riesgo de que el servidor sellegue a saturar. Tngase en cuenta que cada vez que se recibe un requerimiento se arranca unanueva copia del programa CGI. Existen otros riesgos adicionales que se estudiarn ms adelante.

    El objetivo de este captulo es el estudio de la alternativa que Javaofrece a los programasCGI: los servlets, que son a los servidores lo que los appletsa los browsers. Se podra definir unservletcomoun programa escri to en Java que se ejecuta en el mar co de un servicio de red, (un

    servidor HTTP, por ejemplo), y que recibe y responde a las peticiones de uno o ms clientes.En adelante, se supondr que el lector est ya algo familiarizado con los conceptos bsicos de

    la World Wide Web. En caso de no ser as, referirse a la ayuda disponible en le pgina web deI nf ormtica 2.

    2 DIFERENCIAS ENTRE LAS TECNOLOGAS CGI Y SERVLET

    La tecnologa Servletproporciona las mismas ventajas del lenguaje Javaen cuanto a portabilidad(write once, run anywhere) y seguridad, ya que un servlet es una clase de Java igual que

    cualquier otra, y por tanto tiene en ese sentido todas las caractersticas del lenguaje. Esto es algo delo que carecen los programas CGI, ya que hay que compilarlos para el sistema operativo delservidor y no disponen en muchos casos de tcnicas de comprobacin dinmica de errores entiempo de ejecucin.

    Otra de las principales ventajas de los servletscon respecto a los programasCGI, es la delrendimiento, y esto a pesar de que Javano es un lenguaje particularmente rpido. Mientras que loses necesario cargar los programas CGI tantas veces como peticiones de servicio existan por partede los clientes, los servlets, una vez que son llamados por primera vez, quedan activos en lamemoria del servidor hasta que el programa que contr ola el servidor los desactiva. De estamanera se minimiza en gran medida el tiempo de respuesta.

    Solicita servicio (con unformulario, etc.)

    Proporciona resultadocomo flujo con formatoHTML

    Flujo deentrada

    Flujo desalida

    Cliente Servidor

    Procesointerno enel servidor(servlet,CGI, etc)

    Figura 2. Arquitectura cliente-servidor interactiva para la WEB.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 15

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Adems, los servlets se benefician de la gran capacidad de Java para ejecutar mtodos enordenadores remotos, para conectar con bases de datos, para la seguridad en la informacin, etc. Se

    podra decir que las clases estndar de Java ofrecen resueltos mucho problemas que con otroslenguajes tiene que resolver el programador.

    3 CARACTERSTICAS DE LOS SERVLETS

    Adems de las caractersticas indicadas en el apartado anterior, los servlets tienen las siguientescaractersticas:

    1. Son independientes del servidor utilizado y de su sistema operativo, lo que quiere decir que apesar de estar escritos en Java, el servidor puede estar escrito en cualquier lenguaje deprogramacin, obtenindose exactamente el mismo resultado que si lo estuviera en Java.

    2. Los servletspueden llamar a otros servlets, e incluso a mtodos concretos de otros servlets.

    De esta forma se puede distribuir de forma ms eficiente el trabajo a realizar. Por ejemplo, sepodra tener un servlet encargado de la interaccin con los clientes y que llamara a otroservletpara que a su vez se encargara de la comunicacin con una base de datos. De igualforma, los servlets permiten redireccionar peticiones de servicios a otros servlets (en lamisma mquina o en una mquina remota).

    3. Los servletspueden obtener fcilmente informacin acerca del cliente (la permitida por elprotocolo HTTP), tal como su direccin I P, el puertoque se utiliza en la llamada, el mtodoutilizado (GET, POST, ...), etc.

    4. Permiten adems la utilizacin de cookies y sesiones, de forma que se puede guardar

    informacin especfica acerca de un usuario determinado, personalizando de esta forma lainteraccin cliente-servidor. Una clara aplicacin es mantener l a sesincon un cliente.

    5. Los servlets pueden actuar como enlace entre el cliente y una o varias bases de datos enarquitecturas cliente-servidor de 3 capas(si la base de datos est en un servidor distinto).

    6. Asimismo, pueden realizar tareas de proxy para un applet. Debido a las restricciones deseguridad, un applet no puede acceder directamente por ejemplo a un servidor de datoslocalizado en cualquier mquina remota, pero el servlets puede hacerlo de su parte.

    7. Al igual que los programasCGI, los servletspermiten la generacin dinmica de cdigoHTML dentro de una propia pgina HTML . As, pueden emplearse servletspara la creacin

    de contadores, banners, etc.

    4 JSDK 2.0

    El JSDK(Java Servlet Developer Kit), distribuido gratuitamente por Sun, proporciona el conjuntode herramientas necesarias para el desarrollo de servlets. En el momento en el que estas notas hansido escritas (abril 1999), la ltima versin disponible es la 2.1, pero al no estar todava soportada

    por la mayor parte de los servidores HTTP, en adelante se utilizar nicamente a la versin 2.0delJSDK, salvo donde se especifique lo contrario. El JSDK 2.0se encuentra disponible en la direccinde Internet http://java.sun.com/products/servlet/index.html. Se trata de un fichero de 950 Kbytes,

    llamadojsdk20-Win32.exe, que est disponible en el directorio Q:\Infor2\Servlet de la red de

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 16

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Alumnos de la ESIISS, y que puede transportarse al propio ordenador en un simple disquete.ElJSDKconsta bsicamente de 3 partes:

    1. El APIdel JSDK, que se encuentra diseada como una extensin del JDKpropiamente dicho.Consta de dos

    packagescuyo funcionamiento ser estudiado en detalle en apartados posteriores,

    y que se encuentran contenidos enjavax.servlet yjavax.servlet.http. Este ltimo es unaparticularizacin del primero para el caso del protocolo HTTP, que es el que ser utilizado eneste manual, al ser el ms extendido en la actualidad. Mediante este diseo lo que se consigue esque se mantenga una puerta abierta a la utilizacin de otros protocolos que existen en laactualidad (FTP, POP, SMTP, etc.), o vayan siendo utilizados en el futuro. Estos packagesestn almacenados en un fichero JAR (\lib\jsdk.jar).

    2. La documentacinpropiamente dicha del APIy el cdigo fuente de las clases (similar a la delosJDK 1.1y 1.2).

    3. La aplicacin servletrunner, que es una simple utilidad que permite probar los servletscreados

    sin necesidad de hacer complejas instalaciones de servidores HTTP.. Es similar en concepcinal appletviewerdel JDK. Su utilizacin ser descrita en un apartado posterior.

    4.1 VISIN GENERAL DEL APIDE JSDK2.0

    Es importante adquirir cuanto antes una visin general del API (Application ProgrammingInterface) del Java Servlet Development Ki t 2.0, de qu clases e interfaces la constituyen y de cules la relacin entre ellas.

    El JSDK 2.0 contiene dos packages:javax.servlet yjavax.servlet.http. Todas las clases einterfaces que hay que utilizar en la programacin de servletsestn en estos dos packages.

    La relacin entre las clases e interfaces de Java, muy determinada por el concepto deherencia, se entiende mucho mejor mediante una representacin grfica tal como la que puede verseen la Figura 3. En dicha figura se representan las clases con letra normal y las interfaces concursiva.

    Serv let

    init(), destroy()

    abstract service(ServletRequestrq, ServletResponserp)ServletConfiggetServletConfig(), String getServletInfo()

    Serv le tConf ig

    ServletContextgetServletContext()

    String getInitParameter(String)Enumeration getInitParameterNames()

    HttpServlet

    HttpServlet()service(HttpServletRequesthrq, HttpServletResponsehrp)

    doPost(), doGet(), doPut(), doDelete(), doOptions(), doTrace()

    GenericServlet

    GenericServlet()init(), destroy(), service(ServletRequest rq, ServletResponserp)

    ServletConfiggetServletConfig(), ServletContext getServletContext()

    Object

    Figura 3. Jerarqua y mtodos de las principales clases para crear servlets.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 17

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    La clase GenericServletes una clase abstractpuesto que su mtodo service()es abstract. Estaclase implementa dos interfaces, de las cuales la ms importante es la interface Servlet.

    La interface Servletdeclara los mtodos ms importantes de cara a la vida de un servlet: init()

    que se ejecuta slo al arrancar el servlet; destroy() que se ejecuta cuando va a ser destruido yservice() que se ejecutar cada vez que elservletdeba atender una solicitud de servicio.

    Cualquier clase que derive de GenericServlet deber definir el mtodo service(). Es muyinteresante observar los dos argumentos que recibe este mtodo, correspondientes a las interfacesServletRequest y ServletResponse. La primera de ellas referencia a un objeto que describe porcompleto la solicitud de servicio que se le enva al servlet. Si la solicitud de servicio viene de unformulario HTML, por medio de ese objeto se puede acceder a los nombres de los campos y a losvalores introducidos por el usuario; puede tambin obtenerse cierta informacin sobre el cliente(ordenador y browser). El segundo argumento es un objeto con una referencia de la interfaceServletResponse, que constituye el camino mediante el cual el mtodo service() se conecta de nuevo

    con el cliente y le comunica el resultado de su solicitud. Adems, dicho mtodo deber realizarcuantas operaciones sean necesarias para desempear su cometido: escribir y/o leer datos de unfichero, comunicarse con una base de datos, etc. El mtodo service()es realmente el corazn delservlet.

    En la prctica, salvo para desarrollos muy especializados, todos los servlets debernconstruirse a partir de la clase HttpServlet, sub-clase de GenericServlet.

    La clase HttpServlet ya no es abstract y dispone de una implementacin o definicin delmtodo service(). Dicha implementacin detecta el tipo de servicio o mtodo HTTPque le ha sidosolicitado desde el browser y llama al mtodo adecuado de esa misma clase (doPost(), doGet(),etc.). Cuando el programador crea una sub-clase de HttpServlet, por lo general no tiene que

    redefinir el mtodo service(), sino uno de los mtodos ms especializados (normalmente doPost()),que tienen los mismos argumentos que service(): dos objetos referenciados por las interfacesServletRequesty ServletResponse.

    En la Figura 3 aparecen tambin algunas otras interfaces, cuyo papel se resume acontinuacin.

    1. La interface ServletContextpermite a los servletsacceder a informacin sobre el entorno enque se estn ejecutando.

    2. La interface ServletConfigdefine mtodos que permiten pasar al servlet informacin sobresus parmetros de inicializacin.

    3. La interface ServletRequest permite al mtodo service() de GenericServlet obtenerinformacin sobre una peticin de servicio recibida de un cliente. Algunos de los datos

    proporcionados por GenericServletson los nombres y valores de los parmetros enviados porel formulario HTML y una input stream.

    4. La interface ServletResponse permite al mtodo service() de GenericServlet enviar surespuesta al cliente que ha solicitado el servicio. Esta interface dispone de mtodos paraobtener un output streamo un writercon los que enviar al cliente datos binarios o caracteres,respectivamente.

    5. La interface H ttpServletRequest deriva de ServletRequest. Esta interface permite a los

    mtodos service(), doPost(), doGet(), etc. de la clase HttpServlet recibir una peticin de

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 18

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    servicio HTTP. Esta interface permite obtener informacin del header de la peticin deservicio HTTP.

    6. La interface H ttpServletResponse extiende ServletResponse. A travs de esta interface los

    mtodos de HttpServletenvan informacin a los clientes que les han pedido algn servicio.El APIdel JSDK 2.0dispone de clases e interfaces adicionales, no citadas en este apartado.

    Algunas de estas clases e interfaces sern consideradas en apartados posteriores.

    4.2 LA APLICACIN SERVLETRUNNER

    Servletrunneres la utilidad que proporciona Sunconjuntamente con el JSDK. Es a los servletsloque el appletviewer a los applets. Sin embargo, es mucho ms til que appletviewer, porquemientras es muy fcil disponer de un browseren el que comprobar las applets, no es tan sencilloinstalar y disponer de un servidor HTTP en el que comprobar los servlets. Por esta raznla

    aplicacin servletrunner, a pesar de ser bastante bsica y poco configurable, es una herramientamuy til para el desarrollo de servlets, pues se ejecuta desde la lnea de comandos del MS-DOS.Como es natural, una vez que se haya probado debidamente el funcionamiento de los servlets, parauna aplicacin en una empresa real sera preciso emplear servidoresHTTPprofesionales.

    Adems, servletrunneres multithread, lo que le permite gestionar mltiples peticiones a lavez. Gracias a ello es posible ejecutar distintos servlets simultneamente o probar servlets quellaman a su vez a otros servlets.

    Una advertencia: servletrunnerno carga de nuevo de modo automtico los servletsque hayansido actualizados externamente; es decir, si se cambia algo en el cdigo de un servlety se vuelve acompilar, al hacer una nueva llamada al mismo servletrunnerutiliza la copia de la anterior versin

    del servletque tiene cargada. Para que cargue la nueva es necesario cerrar el servletrunner(Ctrl+C)y reiniciarlo otra vez. Esta operacin habr que realizarla cada vez que se modifique el servlet.

    Para asegurarse de que servletrunner tiene acceso a los packages del Servlet API, sernecesario comprobar que la variable de entorno CLASSPATHcontiene la ruta de acceso del ficherojsdk.jaren el directorio l ib(en el ServletAPI2.1estn situados en el fichero servlet-2.1.0.jar). Enla plataforma Java 2es ms sencillo simplemente copiar el JARal directorio extque se encuentraen \jre\lib. Esto hace que los packagessean tratados como extensiones estndar de Java. Tambines necesario cambiar la variable PATHpara que se encuentre la aplicacin servletrunner.exe. Otra

    posibilidad es copiar esta aplicacin al directorio donde estn los dems ejecutables de Java (porejemplo c:\jdk117\bin).

    4.3 FICHEROS DE PROPIEDADES

    Servletrunner permite la utilizacin de ficheros que contienen las propiedades (properties)utilizadas en la configuracin, creacin e inicializacin de los servlets. Las propiedades son paresdel tipo clave/valor. Por ejemplo, s e r v l e t . c a t a l o g o . c o d i g o = S e r v l e t Ca t a l o g o es una

    propiedad cuya clave es s e r v l e t . c a t a l o g o . c o d i g o y cuyo valor es Ser vl et Cat al ogo.

    Existen dos propiedades muy importantes para los servlets:

    1. servlet.nombre.code

    2. servlet.nombre.initargs

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 19

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    La propiedad servlet.nombre.codedebecontener el nombre completo de la clase del servlet,incluyendo su package. Por ejemplo, la propiedad,

    servlet.libros.code=basededatos.ServletLibros

    asocia el nombre libroscon la clase basededatos.ServletLibros.La propiedad initargs contiene los parmetros de inicializacin del servlet. El valor de un

    nico parmetro se establece en la forma no mbr e DePar amet r o=v al or DePar amet r o. Es posibleestablecer el valor de varios parmetros a la vez, pero el conjunto de la propiedad debe ser una nicalnea lgica. Por tanto, para una mayor legibilidad ser preciso emplear el carcter barra inverti da(\)para emplear varias lneas del fichero. As, por ejemplo:

    servlet.librodb.initArgs=\fichero=s e r v l e t s /Datos,\usuario=administrador,\

    ...

    Obsrvese que los distintos parmetros se encuentran separados por comas(,). El ltimo delos parmetros no necesitar ninguna coma al final.

    Todas estas propiedades estarn almacenadas en un fichero que por defecto tiene el nombreservlet.properties(se puede especificar otro nombre en la lnea de comandos de servletrunnertal ycomo se ver ms adelante). Se pueden incluir lneas de comentar io, que debern comenzar por elcarcter (#). Por defecto, este fichero debe estar en el mismo directorio que el servlet, pero alejecutar servletrunner puede especificarse un nombre de fichero de propiedades con un pathdiferente.

    4.4 EJECUCIN DE LA APLICACIN SERVLETRUNNER

    La aplicacin servletrunner se ejecuta desde la lnea de comandos de MS-DOS y admite lossiguientes parmetros (aparecen tecleando en la consola servletrunner ?):

    -p puerto al que escuchar-m nmero mximo de conexiones-t tiempo de desconexin en milisegundos-d directorio en el que estn los s e r v l e t s -s nombre del fichero de propiedades

    As por ejemplo, si se tuviera un servlet en el directorio c:\programas, el fichero depropiedades se llamara ServletEjemplo.prop y se quisiera que el servletrunner estuvieraescuchando el puerto8000, habra que escribir lo siguiente en la lnea de comandos:

    C:\servletrunner -p 8000 -d c:\programas -s ServletEjemplo.prop

    5 EJEMPLO INTRODUCTORIO

    Para poder hacerse una idea del funcionamiento de un servlety del aspecto que tienen los mismos,lo mejor es estudiar un ejemplo sencillo. Imagnese que en una pgina web se desea recabar laopinin de un visitante as como algunos de sus datos personales, con el fin de realizar un estudioestadstico. Dicha informacin podra ser almacenada en una base de datos para su posterior estudio.

    La primera tarea sera disear un formulario en el que el visitante pudiera introducir los datos.Este paso es idntico a lo que se hara al escribir un programaCGI, ya que bastar con utilizar lostagsque proporciona el lenguaje HTML (, , , etc.). Para una mayor

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 20

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    informacin acerca del mismo se recomienda la lectura dela informacin complementaria que esten la web de I nf ormtica 2.En adelante se supondr que el lector se encuentra suficientementefamiliarizado con dicho lenguaje.

    5.1 INSTALACIN DEL JAVA SERVLET DEVELOPMENT KIT (JSDK2.0)

    Para poder ejecutar este ejemplo es necesario que el JSDK 2.0est correctamente instalado, bien enel propio ordenador, bien en uno de los ordenadores de las Salas de PCs de la ESIISS. Para realizaresta instalacin en un ordenador propio se pueden seguir los siguientes pasos:

    1. En primer lugar se debe conseguir el fichero de instalacin, llamadojsdk20-win32.exe. Estefichero se puede obtener de Sun(http://www.javasoft.com/products/servlet/index.html) o en eldirectorio Q:\Infor2\Servlet en la red de PCs de la ESIISS. Se trata de un fichero de 950Kbytes, que puede ser transportado en un disquete sin dificultad.

    2. Se copia el fichero citado al directorio C:\Temp del propio ordenador. Se clica dos vecessobre dicho fichero y comienza el proceso de instalacin.

    3. Se determina el directorio en el que se realizar la instalacin. El programa de instalacinpropone el directorio C:\Jsdk2.0,que es perfectamente adecuado.

    4. En el directorio C:\Jsdk2.0\bin aparece la aplicacin servletrunner.exe, que es muyimportante como se ha visto anteriormente. Para que esta aplicacin sea encontrada al teclearsu nombre en la ventana de MS-DOSes necesario que el nombre de dicho directorio aparezcaen la variable de entorno PATH. Una posibilidad es modificar de modo acorde dicha variabley otra copiar el fichero servletrunner.exeal directorio donde estn los dems ejecutables deJava (por ejemplo C:\Jdk1.1.7\bin); como ese directorio ya est en el PATH, la aplicacin

    servletrunner.exeser encontrada sin dificultad. sta es la solucin ms sencilla.5. Adems de encontrar servletrunner.exe, tanto para compilar los servlets como para

    ejecutarlos con servletrunneres necesario encontrar las clases e interfaces del APIde JSDK2.0. Estas clases pueden estar por ejemplo en el archivo C:\Jsdk2.0\lib\jsdk.jar. Para que estearchivo pueda ser localizado, es necesario modificar la variable de entorno CLASSPATH.Esto se puede hacer en la forma (antepone el path del ficherojsdk.j ar al valor anterior que setuviera en la variable CLASSPATH):

    set CLASSPATH=C:\Jsdk2.0\lib\jsdk.jar;%CLASSPATH%

    6. En las Salas de PCsde la Escuela se puede compilar los servlets con Visual J++ 6.0, aunqueno ejecutarlos ni utilizar el debugger. Para ello, despus de crear el proyecto, se debe ir aProject/Properties/Classpath/New, e introducir Q:\Infor2\Servlet\jsdk.jar.

    En las Salas de PCs de la Escuela el JSDK 2.0est instalado en el directorio Q:\jdk20. Laaplicacin servletrunnerha sido ya copiada a los directorio Q:\jdk117\binyQ:\jdk12\bin, con locual est ya accesible. Para modificar el CLASSPATH se sugiere utilizar los nuevos ficherosjdk117s.bat yjdk12s.bat, disponibles en el directorio Q:\Infor2 y en la web de I nf ormtica 2(apartado de Clases y Prcticas, semana 9).

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 21

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    5.2 FORMULARIO

    El formulario contendr dos campos de tipo TEXT donde el visitante introducir su nombre yapellidos. A continuacin, deber indicar la opinin que le merece la pgina visitada eligiendo una

    entre tres posibles (Buena, Regular y Mala),. Por ltimo, se ofrece al usuario la posibilidad deescribir un comentariosi as lo considera oportuno. En la Figura 4 puede observarse el diseo delformulario creado.

    El cdigo correspondiente a la pgina HTM L que contiene este formulario es el siguiente(fichero MiServlet.htm):

    Enve su opinin

    Por favor, envenos su opinin acerca de este sitio web

    Nombre:

    Apellidos:

    Figura 4. Diseo del formulario de adquisicin de datos.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 22

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Opinin que le ha merecido este sitio web
    Buena
    Regular
    Mala

    Comentarios

    En el cdigo anterior, hay algunas cosas que merecen ser comentadas. En primer lugar, esnecesario asignar un identificador nico (es decir, un valor de la propiedad NAME) a cada uno delos camposdel formulario, ya que la informacin que reciba el servletestar organizada en forma

    de pares de valores, donde uno de los elementos de dicho par ser un String que contendr elnombre del campo. As, por ejemplo, si se introdujera como nombre del visitante Mikel, elservletrecibira del browser el par nombre=Mikel, que permitir acceder de una forma sencilla alnombre introducido mediante el mtodo getParameter(), tal y como se explicar posteriormente alanalizar el servlet del ejemplo introductorio. Por este motivo es importante no utilizar nombresduplicados en los elementos de los formularios.

    Por otra parte puede observarse que en el tag se han utilizado dos propiedades,ACTIONy METHOD. El mtodo (METHOD) utilizado para la transmisin de datos es el mtodoHTTPPOST. Tambin se podra haber utilizado el mtodo HTTPGET, pero este mtodo tienealgunas limitaciones en cuanto al volumen de datos transmisible, por lo que es recomendable la

    utilizar el mtodo POST. Mediante la propiedad ACTIONdeber especificarse el URL del servletque debe procesar los datos. Este URL contiene, en el ejemplo presentado, las siguientescaractersticas:

    El servlet se encuentra situado en un servidor cuyo nombre es miServidor(un ejemplo msreal podra ser www1.ceit.es). Este nombre depender del ordenador que proporcione losservicios de red. La forma de saber cul es el nombre de dicho ordenador y su direccin I Pesacudiendo al Panel de Control (Control Panel)de Windows. Clicando en Red (Network), seaccede a las propiedades de la red (obviamente, si se quiere utilizar servlets, ser necesariotener instalados los drivers de red, en concreto los drivers de TCP/IP que vienen conWindows 95/98/NT). Dentro de la lengeta Protocolos (Protocols)se escogeTCP/IP y se

    clica en Propiedades (Proper ties). Aparecer un nuevo cuadro de dilogo en el que habr queseleccionar la lengeta DNS (Domain Name System).All se encuentra recogido el nombredel ordenador (Host Name)as como su dominio (Domain Name).En cualquier caso, para

    poder hacer pruebas, se puede utilizar el como nombre de servidor el host localo localhost,cuyo nmero I Pes 127.0.0.1. Por ejemplo, se podra haber escrito (aunque estos servicios noseran accesibles desde el exterior de la ESIISS):

    o de otra forma,

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 23

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    El servidor HTTP est escuchando por el puerto el puerto 8080. Todas las llamadasutilizando dicho puerto sern procesadas por el mdulo del servidor encargado de la gestinde los servlets. En principio es factible la utilizacin de cualquier puerto libre del sistema,siempre que se indique al servidor HTTP cul va a ser el puerto utilizado para dichas

    llamadas. Por diversos motivos, esto ltimo debe ser configurado por el administrador delsistema.

    El servletse encuentra situado en un subdirectorio (virtual) del servidor llamado servlet. Estenombre es en principio opcional, aunque la mayora de los servidores lo utilizan por defecto.En caso de querer utilizar otro directorio, el servidor debe ser configurado por eladministrador a tal fin. En concreto, la aplicacin servletrunner de Sun no permite dichamodificacin, por lo que el URL utilizada debe contener dicho nombre de directorio.

    El nombre del servlet empleado es ServletOpinion, y es ste el que recibir la informacinenviada por el cliente al servidor (el formulario en este caso), y quien se encargar de disear

    la respuesta, que pasar al servidor para que este a su vez la enve de vuelta al cliente. Alfinal se ejecutar una clase llamada ServletOpinion.class.

    5.3 CDIGO DEL SERVLET

    Tal y como se ha mencionado con anterioridad, el servletque gestionar toda la informacin delformulario se llamar ServletOpinion. Como un servlet es una clase de Java, deber por tantoencontrarse almacenado en un fichero con el nombre ServletOpinion.java. En cualquier caso, porhacer lo ms simple posible este ejemplo introductorio, este servlet se limitar a responder alusuario con una pgina HTML con la informacin introducida en el formulario, dejando para un

    posterior apartado el estudio de cmo se almacenaran dichos datos. El cdigo fuente de la claseServletOpiniones el siguiente:

    import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

    public class ServletOpinion extends HttpServlet {

    // Declaracin de variables miembro correspondientes a// los campos del formularioprivate String nombre=null;private String apellidos=null;private String opinion=null;private String comentarios=null;

    // Este mtodo se ejecuta una nica vez (al ser inicializado el servlet)// Se suelen inicializar variables y realizar operaciones costosas en// tiempo de ejecucin (abrir ficheros, bases de datos, etc)public void init(ServletConfig config) throws ServletException {

    // Llamada al mtodo init() de la superclase (GenericServlet)// As se asegura una correcta inicializacin del servletsuper.init(config);System.out.println("Iniciando ServletOpinion...");

    } // fin del mtodo init()

    // Este mtodo es llamado por el servidor web al "apagarse" (al hacer// shutdown). Sirve para proporcionar una correcta desconexin de una// base de datos, cerrar ficheros abiertos, etc.

    public void destroy() {System.out.println("No hay nada que hacer...");

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 24

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    } fin del mtodo destroy()

    // Mtodo llamado mediante un HTTP POST. Este mtodo se llama// automticamente al ejecutar un formulario HTMLpublic void doPost (HttpServletRequest req, HttpServletResponse resp)

    throws ServletException, IOException {

    // Adquisicin de los valores del formulario a travs del objeto reqnombre=req.getParameter("nombre");apellidos=req.getParameter("apellidos");opinion=req.getParameter("opinion");comentarios=req.getParameter("comentarios");

    // Devolver al usuario una pgina HTML con los valores adquiridosdevolverPaginaHTML(resp);

    } // fin del mtodo doPost()

    public void devolverPaginaHTML(HttpServletResponse resp) {

    // En primer lugar se establece el tipo de contenido MIME de la respuesta

    resp.setContentType("text/html");

    // Se obtiene un PrintWriter donde escribir (slo para mandar texto)PrintWriter out = null;try {

    out=resp.getWriter();} catch (IOException io) {

    System.out.println("Se ha producido una excepcion");}

    // Se genera el contenido de la pgina HTMLout.println("");out.println("");out.println("Valores recogidos en el formulario");out.println("");

    out.println("");out.println("Valores recogidos del ");out.println("formulario: ");out.println("

    Nombre: "+nombre+"");out.println("
    Apellido: "

    +apellidos+"");out.println("

    Opinin: " + opinion +

    "");out.println("
    Comentarios: " + comentarios

    +"");out.println("");out.println("");

    // Se fuerza la descarga del buffery se cierra el Pr i n t Wr i t er,// liberando recursos de esta forma. IMPORTANTEout.flush();out.close();

    } // fin de devolverPaginaHTML()

    // Funcin que permite al servidor web obtener una pequea descripcin del// servlet, qu cometido tiene, nombre del autor, comentarios// adicionales, etc.public String getServletInfo() {

    return "Este servlet lee los datos de un formulario" +" y los muestra en pantalla";

    } // fin del mtodo getServletInfo()}

    El resultado obtenido en el browser tras la ejecucin del servletpuede apreciarse en la Figura5 mostrada a continuacin:

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 25

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    En aras de una mayor simplicidad en esta primera aproximacin a los servlets, se ha evitadotratar de conseguir un cdigo ms slido, que debera realizar las comprobaciones pertinentes(verificar que los Stringno son nulldespus de leer el parmetro, excepciones que se pudieran dar,etc.) e informar al usuario acerca de posibles errores en caso de que fuera necesario.

    En cualquier caso, puede observarse que el aspecto del cdigo del servletes muy similar al decualquier otra clase de Java. Sinembargo, cabe destacar algunosaspectos particulares:

    La clase ServletOpinion heredade la clase HttpServlet, que a suvez hereda de GenericServlet. Laforma ms sencilla (y por tanto laque debera ser siempre

    empleada) de crear un servlet, esheredar de la clase HttpServlet.De esta forma se est identi-ficando la clase como un servletque se conectar con un servidorHTTP. Ms adelante se estudiaresto con ms detalle.

    El mtodo init()es el primero enser ejecutado. Slo es ejecutadola primera vez que el servlet es llamado. Se llama al mtodo init() de la super-clase

    GenericServleta fin de que la inicializacin sea completa y correcta. La interface ServletConfigproporciona la informacin que necesita el servlet para inicializarse (parmetros deinicializacin, etc.).

    El mtodo destroy()no tiene ninguna funcin en este servlet, ya que no se ha utilizado ningnrecurso adicional que necesite ser cerrado, pero tiene mucha importancia si lo que se busca es

    proporcionar una descarga correcta del servletde la memoria, de forma que no queden recursosocupados indebidamente, o haya conflictos entre recursos en uso. Tareas propias de este mtodoson por ejemplo el cierre de las conexiones con otros ordenadores o con bases de datos.

    Como el formulario HTML utiliza el mtodo HTTP POSTpara la transmisin de sus datos,habr que redefinir el mtodo doPost(), que se encarga de procesar la respuesta y que tiene comoargumentos el objeto que contiene la peticin y el que contiene la respuesta (pertenecientes a lasclases H ttpServletRequesty H ttpServletResponse, respectivamente). Este mtodo ser llamadotras la inicializacin del servlet (en caso de que no haya sido previamente inicializado), ycontendr el ncleo del cdigo del servlet(llamadas a otros servlets, llamadas a otros mtodos,etc.).

    El mtodo getServletInfo() proporciona datos acerca del servlet (autor, fecha de creacin,funcionamiento, etc.) al servidor web. No es en ningn caso obligatoria su utilizacin aunque

    puede ser interesante cuando se tienen muchos servlets funcionando en un mismo servidor ypuede resultar compleja la identificacin de los mismos.

    Figura 5. Pgina HTML devuelta por el servlet.

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 26

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    Por ltimo, el mtodo devolverPaginaHTML()es el encargado de mandar los valores recogidosdel cliente. En primer lugar es necesario tener un streamhacia el cliente (PrintWriter cuandohaya que mandar texto, ServletOutputStream para datos binarios). Posteriormente debeindicarse el tipo de contenido MIMEde aquello que va dirigido al cliente (text/htmlen el caso

    presentado). Estos dos pasos son necesarios para poder enviar correctamente los datos al cliente.Finalmente, mediante el mtodo println()se va generando la pgina HTMLpropiamente dicha(en forma de String).

    Puede sorprender la forma en que ha sido enviada la pgina HTML como String. Podra parecerms lgico generar un Stringen la forma (concatenacin de Strings),

    String texto= +... +"Nombre:" +nombre +"...

    y despus escribirlo en elstreamo flujo de salida. Sin embargo, uno de los parmetros a teneren cuenta en los servletses el tiempo de respuesta, que tiene que ser el mnimo posible. En estesentido, la creacin de un Stringmediante concatenacin es bastante costosa, pues cada vez que

    se concatenan dos Stringsmediante el signo + se estn convirtiendo a StringBuffersy a su vezcreando un nuevo String, lo que utilizado profusamente da lugar requiere ms recursos que loque se ha hecho en el ejemplo, donde se han escrito directamente mediante el mtodo println().

    El esquema mencionado en este ejemplo se repite en la mayora de los servlets y es elfundamento de este tecnologa. En posteriores apartados se efectuar un estudio ms detallado de lasclases y mtodos empleados en este pequeo ejemplo.

    6 EL SERVLET API 2.0

    El JavaServletAPI 2.0es una extensin al APIde Java 1.1.x, y tambin de Java 2. Contiene lospackagesjavax.servlet yjavax.servlet.http. El APIproporciona soporte en cuatro reas:

    1. Control del ciclo de vida de un servlet: clase GenericServlet

    2. Acceso al contexto del servlet(servlet context)

    3. Clases de utilidades

    4. Clases de soporte especficas para HTTP: clase HttpServlet

  • 5/22/2018 Aprenda Servlets de Java, como si estuviera en primero

    Informtica 2: Introduccin a los servlets pgina 27

    Copyright 1999. TECNUN, Javier Garca de Jaln, Jos Ignacio Rodrguez, Aitor Imaz. Todos los derechos reservados. Est prohibida lareproduccin total o parcial con fines comerciales y por cualquier medio del contenido de estas pginas. Slo esta permitida su impresin y utilizacincon fines personales.

    6.1 EL CICLO DE VIDA DE UN SERVLET:CLASE GENERICSERVLET

    Como se ha dicho en el Apartado 4.1, pgina 16, la clase GenericServlet es una clase abstractporque declara el mtodo service() como abstract. Aunque los servletsdesarrollados en conexincon pginas web suelen derivar de la clase HttpServlet, puede ser til estudiar el ciclo de vida de unservlet en relacin con los mtodos de la clase GenericServlet. Esto es lo que se har en losapartados siguientes. Puede ser til recordar la Figura 3, en la pgina 16, que ofrece una visingeneral de las principales clases e interfaces en relacin con los servlets. Adems, la claseHttpServlethereda los mtodos de GenericServlety define el mtodo service().

    Los servlets se ejecutan en el servidor HTTPcomo parte integrante del propio proceso delservidor. Por este motivo, el servidor HTTP es el responsable de la inicializacin, llamada ydestruccin de cada objeto de un servlet, tal y como puede observarse en la Figura 6.

    Un servidor web se comunica con un servlet mediante la los mtodos de la interfacejavax.servlet.Servlet. Esta interface est constituida bsicamente por tres mtodos principales,alguno de los cuales ya se ha utilizado en el ejemplo introductorio:

    ini t(), destroy()y service()

    y por dos mtodos algo menos importantes:

    Respuesta

    Respuesta