Universidad Nacional de Colombia - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Universidad Nacional de Colombia

Description:

Usualmente son clases que implementan una interfaz espec fica que puede ser ... Las cookies en Java son objetos de la clase Cookie, del package javax.servlet.http. ... – PowerPoint PPT presentation

Number of Views:61
Avg rating:3.0/5.0
Slides: 29
Provided by: Barra7
Category:

less

Transcript and Presenter's Notes

Title: Universidad Nacional de Colombia


1
Desarrollo de aplicaciones en Internet
  • Servlets

2
Que es un Servlet?
  • Un Servlet es un componente de software del lado
    del servidor
  • Usualmente son clases que implementan una
    interfaz específica que puede ser invocada desde
    el servidor.
  • Servlet API es una especificación de SUN que
    define las clases e interfaces necesarias para .

3
Ventajas de los Servlets
  • Son compilados
  • Resistente a Caídas
  • Independiente de plataforma
  • Extensible
  • Multi-Hilo
  • Escrito en Java

4
Estructura básica de un Servlet
  • Es una clase normal que extiende de HttpServlet o
    GenericServlet
  • public class Esqueleto extends HttpServlet
  • public void init()
  • // inicializacion del servlet
  • public void service()
  • // la mayoría del trabajo sucede aqui
  • public void destroy()
  • // devolver los recursos aqui

5
Métodos de un Servlet service()
  • service()
  • El servidor llama este metodo cuando se recibe
    una petición al servlet. Para los servlets HTTP,
    este metodo no debería ser sobrecargado. Si no se
    sobreescribe, se llama a alguno de los metodos de
    acuerdo con el tipo de petición (Get, Post)

6
Métodos de un Servlet doGet()
  • doGet()
  • http//www.dominio.com/servlet.do?paramval
  • Este método se llama en respuesta a una petición
    HTTP GET (incluyendo los GET con parámetros). Si
    se van a recibir llamadas de este tipo, se debe
    sobrecargar este método.

7
Métodos de un Servlet doPost()
  • doPost()
  • http//www.dominio.com/servlet.do?
  • Este método se llama en respuesta a una petición
    HTTP POST. Si se van a recibir llamadas de este
    tipo, se debe sobrecargar este método.

8
Métodos de un Servlet init()
  • init()
  • Este método se llama únicamente una la primera
    vez que se carga el servlet. Es usado comúnmente
    para inicializar los recursos que se emplearán en
    el servlet cuando se reciban peticiones.
  • p.e. conexiones a BD

9
Métodos de un Servlet destroy()
  • destroy()
  • Este método se llama inmediatamente antes que se
    descargue el servlet. Este metodo debe ser
    sobrecargado por el desarrollador para liberar
    recursos empleados por el servlet.
  • p.e. conexiones de ret, o sockets.

10
Ciclo de vida de un Servlet
Se ejecuta una llamada al servlet
El servidor carga el Servlet
El servidor selecciona la Instancia del servlet
para ejecutar service()
Se crea una o más instancias del servlet
El servidor descarga el servlet después de
ejecutar destroy()
Service() procesa el request
El Server llama el init()
El servlet espera a ser Llamado de nuevo, hasta
que sea descargado del servidor
11
Api Servlet
java.util
javax.servlet.http
EventListener
HttpSessionBindingListener
EventObject
HttpSessionBindingEvent
javax.servlet
HttpUtils
GenericServlet
java.lang
Cookie
ServletInputStream
Object
HttpServlet
ServletOutputStream
HttpSession
java.io
ServletRequest
HttpSessionContext
InputStream
ServletResponse
HttpServletRequest
OutputStream
HttpServletResponse
Servlet
ServletContext
ServletConfig
12
Hola Mundo
  • import javax.servlet.import
    javax.servlet.http.import java.io.public
    class HolaMundoServlet extends HttpServlet
      public void init(ServletConfig
    conf)    throws ServletException      super.in
    it(conf)    public void service(HttpServletReq
    uest req, HttpServletResponse res)    throws
    ServletException, IOException      res.setConte
    ntType("text/html")    PrintWriter out
    res.getWriter()    out.println("lthtmlgt")    o
    ut.println("ltbodygt")    out.println("lth1gtHola
    Mundolt/h1gt")    out.println("lt/bodygt")    out.
    println("lt/htmlgt")  

13
Web.xml
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • lt!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
    Inc.//DTD Web Application 2.3//EN"
  • "http//java.sun.com/dtd/web-app_2_3.dtd"gt
  • ltweb-appgt
  • ltservletgt
  • ltservlet-namegtHolaMundolt/servlet-namegt
  • ltservlet-classgtHolaMundoServletlt/servlet-class
    gt
  • lt/servletgt
  • lt/web-appgt

14
Mapeo del servlet
  • ltweb-appgt
  • ltservlet-mappinggt
  • ltservlet-namegtHolaMundolt/servlet-namegt
  • lturl-patterngt/holalt/url-patterngt
  • lt/servlet-mappinggt
  • lt/web-appgt

15
Parámetros de inicio
  • ltweb-appgt
  • ltservletgt
  • ltservlet-namegtHolaMundolt/servlet-namegt
  • ltservlet-classgtHolaMundoServletlt/servlet-class
    gt
  • ltinit-paramgt
  • ltparam-namegtadminEmaillt/param-namegt
  • ltparam-valuegtabarrantesb_at_unal.edu.colt/param-
    valuegt
  • lt/init-paramgt
  • ltinit-paramgt
  • ltparam-namegtadminContactNumberlt/param-namegt
  • ltparam-valuegt12026lt/param-valuegt
  • lt/init-paramgt
  • lt/servletgt
  • lt/web-appgt

16
Parámetros de inicio
  • public void init(ServletConfig config) throws
    ServletException
  • Enumeration parameters config.getInitParamet
    erNames()
  • while (parameters.hasMoreElements())
  • String parameter (String)
    parameters.nextElement()
  • System.out.println("Parameter name "
    parameter)
  • System.out.println("Parameter value "
  • config.getInitParameter(parameter))

17
ServletContext
  • El contexto del servlet es el ambiente donde
    corre el servlet
  • El contenedor de servlets crea un objeto del tipo
    ServletContext que se puede usar para acceder a
    información del ambiente del servlet.
  • public void init(ServletConfig config) throws
    ServletException
  • ServletContext servletContext
    config.getServletContext()
  • servletContext.setAttribute("password",
    "dingdong")

18
ServletContext
19
Capturar datos de un Formulario
  • GET ltURLgt?nombreAntonioapellidoperez
  • POST
  • POST /servlet/MiServlet HTTP/1.1
  • User-Agent Mozilla/4.5 (compatibleMSIE
    4.01Windows NT)
  • Host www.dominio.com
  • Accept image/gif, image/x-bitmap, image/jpeg,
    image/jpeg, /
  • Content-type application/x-www-form-urlencoded
  • Content-length 39
  • nombreAntonioapellidoPerez

20
Capturar datos de un Formulario
  • import java.io.
  • import javax.servlet.
  • import javax.servlet.http.
  • public class ThreeParams extends HttpServlet
  • public void doGet(HttpServletRequest
    request,HttpServletResponse response) throws
    ServletException, IOException
  • response.setContentType("text/html")
  • PrintWriter out response.getWriter()
  • String title "Reading Three Request
    Parameters"
  • out.println(ServletUtilities.headWithTitle(title)
  • "ltbodygt\n"
  • "ltulgt\n"
  • " ltligtparam1lt/ligt"
  • request.getParameter("param1") "\n"
  • " ltligtparam2lt/ligt"
  • request.getParameter("param2") "\n"
  • " ltligtparam2lt/ligt"
  • request.getParameter("param3") "\n"
  • "lt/ulgt\n"

21
ServletRequest
22
Preservación del Estado
  • Los servlets permiten seguir la trayectoria de un
    cliente, es decir, obtener y mantener una
    determinada información.
  • Mediante cookies
  • Mediante seguimiento de sesiones
  • Mediante la reescritura de URLs

23
Cookies
  • Son archivos que identifican a un cliente
  • Las cookies en Java son objetos de la clase
    Cookie, del package javax.servlet.http.
  • Pasos para enviarla
  • Crear un objeto Cookie
  • Establecer sus atributos
  • Enviar la cookie
  • Pasos para leerla
  • Recoger todas las cookies de la petición del
    cliente
  • Encontrar la cookie precisa
  • Obtener el valor recogido en la misma

24
Enviar Cookies
  • Cookie miCookienew Cookie("Nombre",
    "ValorInicial")
  • miCookie.setValue("ValorFinal")
  • miCookie.setMaxAge(-1)
  • resp.addCookie(miCookie)

25
Leer Cookies
  • ...
  • if(libroABorrar!null)
  • Cookie arrayCookiesreq.getCookies()
  • for(i0iltarrayCookies.lengthi)
  • Cookie miCookiearrayCookiesi
  • if(miCookie.getName().equals("compra")
  • miCookie.getValue.equals("libro1")
  • miCookie.setMaxAge(0)
  • ...

26
Sesiones
  • Una sesión es una conexión continuada de un mismo
    browser a un servidor durante un tiempo
    prefijado. setMaxInactiveInterval(int)
  • Al igual que las cookies son compartidas por
    todos los servlets de un contexto.
  • HttpSession miSesion req.getSession(true)

27
Sesiones
  • ...
  • HttpSession miSesionreq.getSesion(true)
  • String nom miSesion.getValue(nombre)
  • if(nomnull)
  • miSesion.putValue(nombre, pedro)
  • ...

28
URL Rewriting
  • out.println("Esto es un enlace reescrito")
  • out.println("lta href\""
  • resp.encodeUrl("/servlet/buscador?nombrePedro"
  • "\"lt/agt")
Write a Comment
User Comments (0)
About PowerShow.com