servlets 18 de marzo de 2009. Índice ¿qué es un servlet? ¿cuándo y por qué usar servlets?...

Post on 28-Jan-2016

226 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Servlets

18 de Marzo de 2009

Índice

• ¿Qué es un Servlet?• ¿Cuándo y por qué usar Servlets?• Estructura básica de un HttpServlet• Servlet simple que genera texto plano• Servlet simple que genera un HTML• Compilación, instalación e invocación• Ejemplo: ServletOpinion• Ciclo de vida de los Servets

¿Qué es un Servlet?

• Programas en Java que se ejecutan en un servidor HTTP (servidor Web)

• Actúan como capa intermedia entre:– Petición proveniente de un Navegador Web u

otro cliente HTTP– Bases de Datos o Aplicaciones en el servidor

HTTPServidor Web

Servlet

BDexterna

BD

Aplicación

Tareas encomendadas a un Servlet• Leer los datos enviados por un usuario

– Usualmente de formularios en páginas Web– Pueden venir de applets de Java o programas cliente

HTTP.

• Buscar cualquier otra información sobre la petición que venga incluida en esta– Detalles de las capacidades del navegador, cookies,

nombre del host del cliente, etc.

• Generar los resultados– Puede requerir consultas a Base de Datos, invocar a

otras aplicaciones, computar directamente la respuesta, etc.

• Dar formato a los resultados en un documento– Incluir la información en una página HTML

• Establecer los parámetros de la respuesta HTTP– Decirle al navegador el tipo de documento que se va a

devolver, establecer las cookies, etc.

• Enviar el documento al cliente

¿Cuándo y por qué usar Servlets?

• Muchas peticiones desde navegador se satisfacen retornando documentos HTML estáticos, es decir, que están en ficheros

• En ciertos casos, es necesario generar las páginas HTML para cada petición:– Página Web basada en datos enviados por

el cliente• Motores de búsqueda, confirmación de pedidos

– Página Web derivada de datos que cambian con frecuencia• Informe del tiempo o noticias de última hora

– Página Web que usa información de bases de datos corporativas u otras fuentes del la parte del servidor• Comercio electrónico: precios y disponibilidades

Estructura de un HttpServletimport java.io.*;//Se importan los paquetes con las clases para Servlets y HttpServletsimport javax.servlet.*;import javax.servlet.http.*;

public class ServletTemplate extends HttpServlet{

//El método doGet responde a peticiones mediante el método GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // El objeto “request” se usa para leer los “HTTP headers” que llegan // (p.e. Cookies) y los datos de formularios HTML enviados por el usuario

// El objeto “response” se usa para especificar “HTTP status codes” y // “HTTP headers” de la respuesta (p.e. El tipo de contenido, cookies, etc.)

PrintWriter out = response.getWriter(); // El objeto “out” se usa para enviar contenido al navegador

}

//El método doPost responde a peticiones mediante el método POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

Servlet simple que genera texto planoimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class HelloWorld extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World"); }

}

Servlet simple que genera un HTMLimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class SimpleHTML extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Le decimos al navegador que lo que vamos a devolver es un HTML response.setContentType("text/html");

PrintWriter out = response.getWriter(); // Construimos una página HTML legal out.println(“<HTML>"); out.println(“<HEAD><TITLE>Servlet simple que genera un HTML</TITLE></HEAD>"); out.println(“<BODY>"); out.println(“<H2>Servlet que genera un HTML</H2>"); out.println(“<P>Este Servlet devuelve el cógigo de una página HTML que el"); out.println(“ navegador interpreta y muestra como tal.</P>"); out.println(“</BODY>"); out.println(“</HTML>");

out.flush(); out.close(); }}

Instalación de Tomcat 6.0.16• Realizar download de tomcat.apache.org• Se descomprime en un directorio del

ordenador:– C:\Archivos de programa\Apache\Tomcat 6.0

• Variables del sistema: CATALINA_HOME– set CATALINA_HOME=C:\ Archivos de

programa\Apache\Tomcat 6.0

• Ejecución:– Arranque del servidor: %CATALINA_HOME%\

bin\startup.bat– Url en el navegador:

http://localhost:8080/– Parada del servidor:

%CATALINA_HOME%\bin\shutdown.bat

Compilación• Compilación

– Vamos a utilizar la librería de Tomcat 6– Indicar en el CLASSPATH dónde están las

clases para que el compilador las reconozca• Path del archivo:

%CATALINA_HOME%\lib\servlet-api.jar– Compilar como cualquier otro código fuente

Java

• Instalación– Se entiende por instalación de un Servlet a

ponerlo disponible en el servidor para ser invocado desde un navegador o cliente HTTP

– Se necesita un servidor de Servlets (por ejemplo, Apache Tomcat 6.0 que es gratuito)

– Otros tipos de servidores son GlassFish, Jboss, etc.

Compilación, instalación e invocación• Invocación de un Servlet

– Desde la barra de direcciones del navegador:

• Ejemplo:

• De esta forma se invoca el servlet mediante el método GET siempre

– Desde un formulario:• La dirección del servlet debe ir en el action

• El servlet se invoca al hacer Submit y lo hace mediante el método definido en el formulario

• Al servlet se le pasan los valores de los campos

http://hostname:port/context/Nombre_Servlet

http://localhost:8080/servlet/SimpleHTML

<FORM action=“http://hostname:port/context/Nombre_Servlet” method=“POST”>...</FORM>

Ejemplo: ServletOpinion

• Página HTML:– MiServlet.html

<HTML><HEAD> <TITLE>Envíe su opinión</TITLE></HEAD>

<BODY> <H2>Por favor, envíenos su opinión acerca de este sitio

web</H2> <FORM action="http://localhost:8080/EjemServlet/Opinion

method="POST"> Nombre: <INPUT type="text" name="nombre" size="15"><BR> Apellidos: <INPUT type="TEXT" name="apellidos" size="30"> <P>Opinión que le ha merecido este sitio web<BR> <INPUT type="radio" checked name="opinion"

value="Buena">Buena<BR> <INPUT type="radio" name="opinion"

value="Regular">Regular<BR> <INPUT type="radio" name="opinion" value="Mala">Mala <P>Comentarios<BR> <TEXTAREA name="comentarios" rows="6" cols="40">

</TEXTAREA> <P><INPUT type="submit" name="botonEnviar"

value="Enviar"> <INPUT type="reset" name="botonLimpiar" value="Limpiar"> </FORM></BODY></HTML>

Ejemplo: ServletOpinion

• Servlet:– ServletOpinion.java -> ServletOpinion.class

• Fichero de configuración de la aplicación web:– web.xml …

<servlet> <servlet-name>Ej Servlet de OPINION</servlet-

name> <servlet-class>ServletOpinion</servlet-class> </servlet>

<servlet-mapping> <servlet-name>Ej Servlet de OPINION</servlet-

name> <url-pattern>/Opinion</url-pattern> </servlet-mapping>

Ejemplo: ServletOpinion

• Crear la siguiente estructura de carpetas y ficheros:

Ejemplo: ServletOpinion

Ejemplo: ServletOpinion

Ejemplo: ServletOpinion

• Arrancar Tomcat– Inicio>Todos los programas>Apache

Tomcat>• Monitor Tomcat

– En la barra de tareas: Start service (para arrancar) y Stop service (para parar)

• Tomcat Manager– Usuario: admin y Contraseña: (en blanco)– Arrancar /EjemServlet

Ejemplo: ServletOpinion

Ejemplo: ServletOpinion

Ejemplo: ServletOpinion

• Puede ocurrir que salga el error anterior, entonces escribir en la url del navegador el nombre del fichero .html (en este caso, MiServlet.html):– http://127.0.0.1:8080/EjemServlet/

MiServlet.html

Ejemplo: ServletOpinion

Ejemplo: ServletOpinion

Ciclo de vida de los Servets

HttpServletMétodo init()

•Se ejecuta una sola vez al inicializar el Servlet

•Inicializar variables y operaciones costosas en tiempo de ejecución

Método destroy()

•Lo llama el servidor al “apagarse”

•Cerrar procesos en curso, liberar memoria, cerrar ficheros

Métodos doGet() o doPost()

•Recoger peticiones del usuario y ejecutar operaciones

•Mandar respuesta al usuario (en forma de HTML)

Otros métodos de usuario

Objeto HttpServletReque

st

Objeto HttpServletRespo

nse

top related