Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Diseo de aplicaciones
web
Servlets
Programas que se ejecutan en los servidores.
Aaden funcionalidad a un servidor web, del
mismo modo que los applets aaden funcionalidad
a los navegadores.
Similares a los scripts CGI, salvo que ofrecen
una independencia de la plataforma.
Cundo se suelen utilizar
La pgina web se basa en datos que proporciona
el usuario.
Ejemplo: e-commerce sites.
Los datos cambian frecuentemente.
NAVEGADOR
WEB Llega un applet en java
Arranca la mquina
Virtual de java y
Se ejecuta el applet
MQUINA
VIRTUAL JAVA
Servlets
Servlets. Requisitos
El servidor debe tener una mquina virtual Java.
El servidor debe soportar la API de los servlets Java.
HttpServlet
MiServlet
Ciclo de vida de un servlet
Carga
init()
Servidor Servlet
Cliente
doGet()
Servlet Manejo de service() doPost()
peticiones
Servidor Cliente
Descarga
destroy()
Servidor Servlet
Inicializacin de un servlet
public void init (ServletConfig config)
Finaliza antes de la invocacin de cualquier
mtodo sobre el servlet
Slo se invoca una vez, a menos que el servidor
recargue el servlet
ServletConfig: argumentos de inicializacin para
el servlet
Ej.:
abrir ficheros o establecer conexiones a los
servidores
Servicio
public void service (ServletRequest req,
ServletResponse res )
Lee la peticin y produce el mensaje de
respuesta
Objeto ServletRequest:
Comunicacin que fluye del cliente al servidor
Objeto ServletResponse:
Encapsula la informacin enviada desde el
servidor al cliente
HTTP Servlets
Mtodo HTTP GET
Ejemplo:
GET /servlet/MyServlet?nombre=Juan& institucion=FI
HTTP/1.1
Connection: Keep-Alive User-Agent:
Mozilla/4.0 ( compatible; MSIE 4.01;
Windows NT)
Host: www.datsi.fi.upm.es
Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg
Limitacin:
Cuntos datos son pasados como parte del
URL Uso de HTTP POST
Mtodo HTTP POST
Permite al cliente enviar datos al servidor
Pasar ms informacin que en una
peticin HTTP GET
Ejemplo:
POST /servlet/MyServlet HTTP/1.1 User-
Agent: Mozilla/4.0 ( compatible; MSIE
4.01; Windows NT)
Host: www.datsi.fi.upm.es
Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, */
Content-type: application/x-www-form-urlencoded
Content-length: 39 nombre=Juan&institucion=FI
doGet() y doPost()
Sobreescribir mtodos doGet() y doPost()
public void doGet (
HttpServletRequest request,
HttpServletResponse response);
public void doPost (
HttpServletRequest request,
HttpServletResponse response);
Destruccin del servlet
public void destroy()
Liberar los recursos (cerrar ficheros abiertos o
cerrar conexiones con bases de datos). Puede
ser un mtodo vaco.
El servidor espera a llamar al mtodo destroy()
hasta que todos los servicios se hayan
completado o haya pasado una cantidad de
tiempo determinada
Estructura de un Servlet
import java.io.*; // (tipo de contenido, establecer
import javax.servlet.*; // cookies, ...)
import javax.servlet.http.*;
public class SomeServlet extends HttpServlet {
PrintWriter out = response.getWriter();
// El servidor enva una pgina
// web al cliente
public void doGet (HttpServletRequest // Utilizar out para enviar el
request, // contenido al navegador
HttpServletResponse response) throws
ServletException,
IOException }
{ // Anlogamente, sobreescribir
// Utilizar request para leer // doPost().
// datos procedentes del
import java.io.*;
response.setContentType (text/html);
import javax.servlet.*;
out = response.getWriter();
import javax.servlet.http.*; out.println(<HTML><HEAD><TITLE>);
public class HolaMundoSrvlt extends out.println(titulo);
HttpServlet { out.println(</TITLE></HEAD><BODY>);
// El servidor enva una pgina web al out.println(<H1>+titulo+</H1>);
cliente public void doGet out.println(</BODY></HTML>);
(HttpServletRequest request, out.close();
HttpServletResponse response) throws
ServletException, }
IOException
}
Ejemplo Servlets: Hola Mundo
Obtencin y envo de informacin
Obtencin de datos del getInputStream()
cliente: Envo de datos al
getParameter() cliente:
getParameterValues( getWriter
)
getOutputStream
getParameterNames(
) getReader
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
Portabilidad
Modularidad