• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Curso Java Avanzado   2 Servlets
 

Curso Java Avanzado 2 Servlets

on

  • 17,060 views

Tema 2 - Servlets del workshop de 25 horas de Java Avanzado

Tema 2 - Servlets del workshop de 25 horas de Java Avanzado

Statistics

Views

Total Views
17,060
Views on SlideShare
15,147
Embed Views
1,913

Actions

Likes
23
Downloads
0
Comments
5

32 Embeds 1,913

http://techmi.es 892
http://sed.ucla.edu.ve 338
http://curso-j2ee.blogspot.com 197
http://ead.ucla.edu.ve 173
http://curso-j2ee.blogspot.com.es 110
http://www.slideshare.net 73
http://curso-j2ee.blogspot.mx 33
http://capacitacionfitec.wikispaces.com 23
http://fomentconsorci2010.formaciondigital.com 23
http://fomentconsorci2012.formaciondigital.com 8
http://www.teleformacioneticom.com 7
http://fomentconsorci2011.descartesmultimedia.com 4
http://curso-j2ee.blogspot.com.ar 4
http://fade2011.formaciondigital.com 3
http://fedeto2011.formaciondigital.com 3
http://avanza2011.formaciondigital.com 3
http://didakos.formaciondigital.com 2
http://mexicofirst.mx.formaciondigital.com 2
http://sena.formaciondigital.com 2
http://sadesi.formaciondigital.com 1
http://oracle.cl.formaciondigital.com 1
http://plataforma2013.formacioncontinuaeticom.com 1
http://www.edutec.edu.sv 1
http://plataforma.entic.es 1
http://curso-j2ee.blogspot.co.uk 1
http://oracle.formaciondigital.com 1
http://webcache.googleusercontent.com 1
http://static.slidesharecdn.com 1
http://www.curso-j2ee.blogspot.com 1
http://formacionfedeto.formaciondigital.com 1
http://fiatc.formaciondigital.com 1
http://www.curso-j2ee.blogspot.com.es 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

15 of 5 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • wao men muy bueno pero no siempre hay internet para leerlo dejalo descargar
    Are you sure you want to
    Your message goes here
    Processing…
  • buen material
    Are you sure you want to
    Your message goes here
    Processing…
  • muy bueno el contenido, solo que es un coño no poder descargarlo.
    Are you sure you want to
    Your message goes here
    Processing…
  • Podrian habilitar para bajarlo??
    Are you sure you want to
    Your message goes here
    Processing…
  • muy buen material para tener presente, una lata no poder bajarlo.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Curso Java Avanzado   2 Servlets Curso Java Avanzado 2 Servlets Presentation Transcript

  • Java Avanzado Emilio Avilés Ávila http://www.techmi.es
  • Workshop (25 horas) Workshop Java avanzado para empresas y profesionales
  • Temario
    • Introducción al desarrollo Web
    • Servlets
    • JSP
    • Javabeans
    • EJB
    • Struts
    • Resumen y conclusiones
  • Tema 2 Servlets
  • Objetivos
    • Introducción al desarrollo Web
    • Servlets
    • JSP
    • Javabeans
    • EJB
    • Struts
    • Resumen y conclusiones
    • Que son los servlets
    • Servlets vs CGI
    • Servlets y contenedores
    • ¿Por qué programación dinámica?
    • ¿Por qué Java?
    • Ciclo de vida servlets
    • Ejemplos
      • FormData
      • Parámetros
      • Headers
      • Cookies
      • Session Tracking
    • Filtros
  • 2 - Servlets
    • Responsabilidades de un Servidor
      • Proporcionar servicios a clientes remotos.
      • Procesar las request
        • Programar a nivel de socket.
        • Extraer la información del request message.
        • Implementar el protocolo cliente-servidor.
      • Generar una response
        • Construir la respuesta dependiendo del servicio.
          • FTP: Transferir el fichero solicitado
          • HTTP: Generar una salida (output) … HTML, etc.
        • De manera dinámica
          • Consulta a BDD
          • Business Rules
          • Presentación de la información en diversos formatos.
  • 2 - Servlets
    • ¿Qué es un servlet?
    • Un servlet es un objeto java que se ejecuta en un servidor (contenedor J2EE ), especialmente diseñado para ofrecer contenido dinámico desde un servidor Web, generalmente HTML
    • La palabra servlet deriva de otra anterior, applet
      • Servlet ‘parecidos’ a los applet pero en la parte cliente.
    • Creado por Sun 1997.
    • El uso más común de los servlets es:
      • Generar páginas web de forma dinámica a partir de los parámetros de la petición.
      • Devolver datos de BDD.
  • 2 - Servlets
    • Más Tareas que hacen los servlet
      • Leer datos de formularios cliente.
      • Leer datos de clientes implícitos (Headers).
      • Generar resultados.
      • Enviar datos explícitos (HTML, XML, VML,…).
      • Enviar datos implícitos.
        • Devolver un estado de la petición.
        • Respuestas en Cabeceras.
  • 2 - Servlets
    • ¿Qué es un servlet? Programación.
      • Básicamente: Instancia de la clase javax.servlet
      • No están relacionados con un protocolo en concreto pero lo suelen hacerlo con HTTP.
      • Todos los servlet heredan de
        • javax.servlet (Servlet Básicos)
        • javax. HttpServlet Servlet Web (La mayoría )
          • Abstraen toda la información del protocolo http dejando que sólo tengamos que implementar la lógica
          • Uso típicos httpservlet
            • Procesar y almacenar datos de un form
            • Proporcionar datos dinámicos (EJ, resultado BDD)
            • Manejar el estado del protocolo Stateless http
    • Servlet 2.3, 2.5 y 3.0 (JSR 154 y JSR 315)
  • 2 - Servlets
    • Servlet y contenedores
  • 2 - Servlets
    • Contenedor Servlets
      • Módulo del servidor Web que carga, gestiona y ejecuta los servlets.
      • También es conocido como motor servlets.
      • Cuando un cliente hace una petición:
        • Si es un recurso pasivo lo proporciona el servidor.
        • Si es un recurso activo (Servlet) el servidor delega la petición en el contenedor del servlet y es éste quien proporciona la respuesta.
  • 2 - Servlets
    • ¿Porqué construir páginas dinámicas?
      • La página Web estaría basada en inputs del usuario
        • Web 2.0
        • Buscadores
      • La páginas Web depende constantemente de los datos cambiantes
        • Página meteorológica
        • Titulares de Noticias
      • La Web se alimenta de base de datos externas (EIS)
        • Web de comercio electrónico
        • Basa los precios de sus productos
  • 2 - Servlets
    • Ventajas de los Servlet
      • Eficientes : Threads en lugar de Procesos
      • Convenientes : Múltiples utilidades de alto nivel
      • Potentes : Permiten Compartir datos, persistencia.
      • Portables : Corren en máquinas virtuales
      • Baratos : Servidores de aplicaciones gratuitos
      • Seguros : No Shells, no overflows, autocontenidos
  • 2 - Servlets
    • ¿Por qué Java?
  • 2 - Servlets
    • Servlet vs CGI
      • La forma tradicional de acceder al servidor era através de Common Gateway Interface (CGI)
      • Programas que residían y se ejecutaban en servidor
      • Diferencias con los servlets
        • Los servlets no ejecutan en procesos diferentes
        • Los servlets permanecen en memoria entre peticiones
        • En servlets sólo hay una instancia que responde concurrente
        • El servlet ejecuta en un contexto (contenedor) que le permite seguridad, transacionalidad y reutilización
  • 2 - Servlets
    • ¿Qué necesito para construir un servlet?
    • I mplementar la interfaz javax.servlet.Servlet
    • Heredar de un protocolo que lo implemente
      • ej: javax.servlet .HttpServlet
        • HttpServletRequest
        • HttpServletResponse
  • 2 - Servlets
    • Protocolo http: Recordatorio.
      • Consiste en envío request del browser al servidor y generar response de vuelta.
      • Elementos de un request
        • Método: ( get , head, do, put, post, delete, trace)
        • URI: http:// host / webAPP / servlet / bla.bla
        • Cabeceras (Headers)
        • Cuerpo (Body)  Puede estar vacio
      • Elementos de una response
        • Código resultado ( Status Code)
        • Cabeceras (Headers)
        • Cuerpo (Body)  No debe estar vacia
  • 2 - Servlets
    • Protocolo http: request
      • Un web browser envía una HTTP request al web server cuando uno de los siguientes eventos sucede:
        • El user clickea un link de una pagina html.
        • El usuario completo un formulario html.
        • El usuario introduce una URL en la dirección del browser .
      • Otros:
        • Función reload() javascript.
        • Programáticamente.
  • 2 - Servlets
    • HttpServlet
      • Al enviar un http request el contenedor de servlet lo captura con HttpServlet .
      • Por cada método http existe una función:
  • 2 - Servlets
    • ServletRequest :
      • Extrae los parámetros enviados por el cliente.
    • HttpServletRequest
      • Implementa todos los métodos del ServletRequest de manera HTTP.
      • Parsea e interpreta message HTTP.
      • Proporciona información relevante al servlet.
    • HttpServletResponse
      • ‘ Servlet gateway’ para enviar información al browser en formato message HTTP .
    • ServletResponse :
      • Proporciona métodos para cualquier protocolo
  • 2 - Servlets
    • “ Hola Mundo” Servlet
  • 2 - Servlets
        • Importamos los paquetes necesarios
        • Heredamos de HttpServlet
        • Sobreescrimos el método doGet con las peticiones
        • Establecemos el tipo de contenido de la respuesta
        • Obtener el objeto donde escribiremos la salida
  • 2 - Servlets
        • Escribimos código HTML en la salida
        • Cerramos el PrintWritter de salida
        • Sobreescrimos el método para obtener la información del servlet
  • 2 - Servlets
    • Ciclo vida Servlet
      • Hasta ahora hemos entendido:
        • El servlet recibe el request del cliente.
        • Lo procesa extrayendo información.
        • Envía una respuesta con los métodos doXXX().
      • Pero antes de que el servlet pueda dar servicio al cliente debe alcanzar un estado :
        • Primero debe cargarse e instanciar la clase, se encontrará en el estado loaded.
        • Luego debemos inicializar la instancia (initilized).
        • Y en este estado es cuando podremos dar servicio a través del service()
        • Hasta que se destruya el servlet ( destroyed)
  • 2 - Servlets
    • Ciclo vida Servlet
    El contenedor llama a este método para descargar el servlet. void destroy () Método para procesar la peticiones request del cliente. void service (ServletRequest, ServletResponse) El contenedor del servlet llama a este método para inicializarlo. void init (ServletConfig) Descripción Método
  • 2 - Servlets
    • Estados: Ciclo vida Servlet
      • Loading : El contenedor servlet crea una instancia Class.forName(className).newInstance() por cada servlet descrito en web.xml.
      • Initializing: Inicializar los parámetros init(ServletConfig) especificados en ServletConfig obtenidos del web.xml
        • Lazy loading : Sólo se inicializa por primera vez cuando se recibe por primera vez una request para cargar ese servlet.
      • Servicing: El contenedor procesa request llamando a Servlet.service(ServletRequest, ServletResponse)
      • Destroying: Cuando el contenedor decide que no necesitará más la instancia del servlet destroy()
      • Unloading: Una vez destruido la instancia puede ser ‘garbage-ada’ a través de shutdown()
  • 2 - Servlets
    • ServletConfig
      • Se obtiene en el método init() al inicializar el servlet.
    Nos devuelve el ServletContext del servlet. ServletContext getServletContext () Nos devuelve el nombre del servlet que hay en web.xml String getServletName () Nos devuelve un Enumeration con todos los nombres de los parámetros. Enumeration getInitParameterNames () Devuelve el valor del parametro name o null String getInitParameter (String name) Descripción Metodo
  • 2 - Servlets
    • ServletContext
      • Se obtiene en el método getServletContext () del la configuración del servlet.
      • Es interfaz para ver información del entorno donde corré el servlet ( versiones, etc.)
      • Solo hay uno por aplicación Web.
    Obtiene el valor del parámetro ‘global’ name String getInitParameter (String name) Enum. getInitParameterNames () Obtiene el path real en el servidor Web del recurso pasado como path relativo relativePath getRealPath (String relativePath) Obtiene un recurso concreto como InputStream (Serialización) java.io.InputStream getResourceAs Stream(String path) Obtiene la URL completa del recurso enviado como path relativo a la carpeta root de la aplicación Web. java.net.URL getResource (String path) Descripción Metodo
  • 2 - Servlets
      • Ejercicios Prácticos
        • Extraer datos de un formulario
          • Parámetros conocidos
          • Leer todos lo parámetros
        • Ver Info y Cabeceras de la Request
        • Establecer una Response
          • Status
          • Headers (Números Primos)
        • Cookies
        • Session Tracking
        • Filtros
  • 2 - Servlets
    • Formulario de Datos
      • Ejemplo de URL con parámetros
          • http://host/path?user=Marty+Hall&origin=bwi&dest=lax
        • User, origin y dest
  • 2 - Servlets
    • ¿Cómo recibe los parámetros?
      • En el GET del protocolo HTTP
      • Concatenados por ‘&’ y tupla/valor
  • 2 - Servlets
    • Ejemplo FormData HTML
      • Enviaremos los parámetros en el POST
  • 2 - Servlets
    • Leyendo los datos con ServletRequest
    Nos devuelve o un Enumeration o mapa de todos los parámetros de la petición para recorrerlos. Enumeration getParameterNames () o getParamaterMap () Nos devuelve un array con los valores de todas las ocurrencias de name en la URL. String[] getParameterValues (String paramName) Nos devuelve la primera ocurrencia de la URL. String getParameter (String paramName) Descripción Metodo
  • 2 - Servlets
    • Ejemplo con tres parámetros
  • 2 - Servlets
    • Leyendo todos los parámetros
  • 2 - Servlets
    • Leyendo Cabeceras HTTP (Headers)
      • Ejemplo típica cabecera HTTP
  • 2 - Servlets
    • ¿Cómo leemos cabeceras con Servlets?
    Devuelve todas las nombres de cabeceras. Esto es útil para obtener los valores asociados cuando no conocemos los nombres de las propias cabeceras. Enumeration getHeaderNames () Devuelve en forma de Enumeration todos los valores asociados a la cabecera headerName Enumeration getHeaders (String headerName) Devuelve uno de los valores asociados a la cabecera headerName String getHeader (String headerName) Descripción Metodo
  • 2 - Servlets
    • Ejemplo (1/2)
      • Construir una Tabla con las Headers request
  • 2 - Servlets
    • Ejemplo (2/2)
      • Obtenemos las headers, recorriendolas y obteniendo sus valores.
  • 2 - Servlets
    • Diferencias entre Browsers
  • 2 - Servlets
    • HTTP Request/ Response (Estados)
  • 2 - Servlets
    • Códigos de Errores HTTP
      • 200  OK
      • 204  No hay contenido
      • 301  Contenido solicitado movido
      • 401  No autorizado
      • 404  No Encontrado
      • 500  Error en el Web Server
  • 2 - Servlets
    • Estableciendo Headers en Response
  • 2 - Servlets
    • Headers en HTTPHeaderResponse
    Establece un valor value en formato Date a la cabecera de nombre name. void setDateHeader (String name, long millisecs) Asociar muchos valores a una mismo nombre de cabecera void addHeader/addIntHeader / addDateHeader (String name, [ ]) Nos indica si ya existe una cabecera de nombre name. boolean containsHeader (String name) Establece un valor value en formato Integer a la cabecera de nombre name. void setIntHeader (String name, int value) Establece un valor value a la cabecera de nombre name. void setHeader (String name, String value) Descripción Método
  • 2 - Servlets
    • Tipos de contenido documentos
      • Múltiples content –types en el response
  • 2 - Servlets
    • content –types = image/x-pixmap
      • Envío de imágenes:
        • Los servlet no sólo devuelven HTML
        • Imágenes en formato .xpm
          • Almacena pixeles en datos ASCII
  • 2 - Servlets
    • Servlet envío de imagen
      • http://localhost:22722/servlet/XpmServlet?COLOR=FF0000
  • 2 - Servlets
    • Ejemplo ShadowText: JPEG Dinámico
      • response.setContentType("image/jpeg");
  • 2 - Servlets
    • Cookies
      • Idea
        • El servlet manda la tupla nombre/valor al cliente
        • El protocolo http es stateless (no guarda estado)
        • Algunas página (e-commerce) necesitan recordar
        • Para ello surgen cookies (Almacenan tuplas)
      • Usos
        • Identificar usuario y password en e-commerce
        • Personalizar una Web
        • Publicidad selectiva
  • 2 - Servlets
    • Cookies y seguridad
  • 2 - Servlets
    • Cookies: Seguridad VS Privacidad
      • El problema es la privacidad no seguridad
        • El servidor recuerda tus acciones pasadas
        • Si das información personal, la recuerda
        • Server comparte cookies con EIS(GoogleAdsense)
        • Algunas Web guardas cookies (CreditCard)
      • Moral de desarrolladores de Servlet
        • No construyas servlets que requieran de Cookies
        • Si es necesario, no guardes información crítica
  • 2 - Servlets
    • ¿Cómo crear Cookies en Servlets?
      • Crear un objeto Cookie
        • Cookie c = new Cookie(“user”, “12345”);
      • Establecer el timeout
        • C.setMaxAge(60*60*24*7); //Una Semana
      • Incluirla en nuestro HTTP response
        • Response.addCookie(c);
  • 2 - Servlets
    • ¿Cómo recojo/leo las cookies?
      • Cookies call.getCookies();
  • 2 - Servlets
    • Ejemplo: Detectando primeros Visitantes
      • ¿Es la primera vez que accede a la Web?
  • 2 - Servlets
    • Session Tracking (1)
      • ¿Por qué es necesario?
        • Ejemplo tienda on-line (añadir productos) ¿Cómo sabe el servidor que tengo en el carrito?
        • Cuando decidimos hacer la compra, ¿Cómo sabe el servidor quien añadió a la cesta los productos?
  • 2 - Servlets
    • Session Tracking (2)
      • ¿Cómo lo enviaría el cliente?
        • Concatenando la sesión al final de la URL
        • EJ: http:// host / path / file.html:jsessionid =1234
        • El servidor asociará el id con la información
      • Ventaja
        • Funciona aunque la Cookie estén deshabilitada
      • Desventaja
        • Todas las URLs deben estar con parámetros
        • Todas la páginas generadas dinámicamente
  • 2 - Servlets
    • Idea:
      • Asociar cookie con datos en el servidor
      • Y después?
        • Extraer la cookie que almacena el id sesión
        • Poner tiempo de expiración a la cookie
        • Generar id sesión únicos
        • Asociar la tabla hash con cada petición
  • 2 - Servlets
    • Solución: HttpSession
      • Cuando el servidor recibe una request de un cliente por primera vez genera una Session y asigna un identificador único.
      • El cliente debe de incluir este identificador en futuras peticiones al servidor.
  • 2 - Servlets
        • HttpSession Métodos
      • String getAttribute(String Name)
          • Extrae los valores de los atributo almacenados en el objetos Sesión.
          • Si el nombre del atributo no está  Devuelve null
      • void setAttribute(String name, Object value)
          • Asocia un valor con un nombre (de atributo) en el objeto Sesion
      • void removeAttribute(String name)
          • Elimina un valor asociado a un nombre
      • Enumeration getAttributeNames()
          • Obtiene los nombres de todos los atributos en la session
      • String getId()
          • Obtiene el identificador único de la sesión
  • 2 - Servlets
        • HttpSession Métodos (II)
      • isNew()
          • Determina si la sesión es nueva para el cliente
          • OJO no para la página
      • getCreationTime()
          • La fecha en la que la sesión fue creada
      • getLastAccessedTime()
          • La fecha última de acceso a la sesión
      • getMaxInactiveInterval, setMaxInactiveInterval()
          • Tiempo de expiración de una sesión antes de sea invalidada
      • Invalidate()
          • Invalida la actual sesión
  • 2 - Servlets
        • Session Ejemplo 1
        • Contar las veces que accedemos con un mismo cliente
  • 2 - Servlets
        • Session Ejemplo 2
        • Añadir un lista de subscripción de usuarios
  • 2 - Servlets
    • Session timeout
      • ¿Qué pasa si el cliente no invalida la sesión?
        • Queda habilitada hasta que pasa un tiempo ( timeout) sin acceder a ella ( HttpSession )
      • ¿Donde establezco el timeout?
      • ¿Como puedo forzar a crear una nueva Sesión?
        • HttpSession request.getSession( true) ;
  • 2 - Servlets
    • Resumen Objeto Session
      • La sesión no viaja en el request.
        • Lo hace el identificador
      • Para obtener el objeto session.
        • requets.getSession()
      • Extraer datos de la session.
        • session.getAttribute(“nombre”)
          • Chequear que no devuelve null
          • Si hacemos cast usar @SupressWarnings
      • Poner datos en la session.
        • Session.setAttribute(“nombre”,”valor”)
          • Los objetos deben ser Serializables.
  • 2 - Servlets
    • Filtros
      • Asociado tanto a servlet como JSP.
      • Se definen en el descriptor web.xml
      • Examinan una request y:
        • Invocan al recurso ( servlet o JSP) normal.
        • Invocan al recurso modificando la request.
        • Invocan al recurso modificando la response antes de ser devuelta al cliente.
        • Previenen al recurso de ser llamado o redirigido a diferentes recursos.
        • Retorna un código de estado particular.
        • Genera un out fijo ( footer, firma, etc…).
  • 2 - Servlets
    • Filtros
      • Analizan la request y deciden si la dejan pasar.
      • Manipular la request y customizar cabeceras.
      • Manipular y customizar la response a enviar.
  • 2 - Servlets
    • ¿Cómo crear un Filtro?
      • Implementamos el interface Filter
        • doFilter, Init y Destroy
      • Lógica de negocio en el doFilter
        • Args: ServletRequest, ServletResponse, FilterChain
      • Llamamos el doFilter(..) del FilterChain
        • Esto invocará los siguientes filtros (si hubiesen)
      • Registramos el filtro en el web.xml
        • Filter y Filter-mapping
  • 2 - Servlets
    • Ejemplo Filtro: Hola Mundo
  • 2 - Servlets
    • Usos de un filtro
      • Authentication filters
      • Logging and auditing filters
      • Image conversion filters
      • Data compression filters
      • Encryption filters
      • Tokenizing filters
      • Filters that trigger resource access events
      • Extensible Stylesheet Language Transformation (XSLT) filters
      • MIME-type chain filters
  • Conclusiones
    • Introducción al desarrollo Web
    • Servlet
    • JSP
    • Javabeans
    • EJB
    • Struts
    • Resumen y conclusiones
    • Que son los servlets
    • Servlets vs CGI
    • Servlets y contenedores
    • ¿Por qué programación dinámica?
    • ¿Por qué Java?
    • Ciclo de vida servlets
    • Ejemplos
      • FormData
      • Parámetros
      • Headers
      • Cookies
      • Session Tracking
    • Filtros
  • Referencias
    • Novode Essential Servlet http:// www.novocode.com / doc / servlet - essentials /
    • Tutorial Servlet: http:// www.apl.jhu.edu /%7Ehall/java/ Servlet - Tutorial / index.html
    • Especificación en Java Sun: http:// java.sun.com / products / servlet /
    • Filters Essential: http:// java.sun.com / products / servlet / Filters.html
    • En el Tutorial J2EE 4: http:// java.sun.com /j2ee/1.4/ docs / tutorial / doc / Servlets.html#wp69957