Servlets Roberto Moriyón. Servlets, I Objetos java, componentes web contenidas en un servidor (contenedor de servlets) que los reutiliza, que reciben.

Slides:



Advertisements
Presentaciones similares
Java Enterprise Edition (Java EE)
Advertisements

2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
Curso de Java “Java para Web” Rogelio Ferreira Escutia.
Nau Gran dHivern Intr. a la creación y gestión de páginas web Introducción a la web.
Internet y tecnologías web
Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004.
Fernando Alonso Blázquez Formularios en lenguaje HTML 26 de Febrero de 2004.
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
Servlets 22 de Abril de 2004 Fernando Alonso Blázquez.
Curso de Java Capitulo 7: Continuación Poo Profesor:
CI-2413 Desarrollo de Aplicaciones para Internet
Arquitectura Web en Aplicaciones Empresariales Java/J2EE
Aplicaciones J2EE.
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
"java del lado del servidor" Servlet y JSP Java Server Pages.
OBJETO REQUEST. El objeto Request Por qué el objeto request Funcionamiento Colecciones: – Transferencia de variables por URL –Transferencia de variables.
Introducción a la arquitectura Web
Servlets.
Servlets Servlets.
JSP Copyright ISIPE – Instituto de Servicios Informáticos para Empresas – Universidad Siglo 21 – Cualquier copia u otro uso debe ser autorizado expresamente.
Curso de Java y Aplicaciones Web
Java 2 Platform Enterprise Edition
Sesión en Servlets 31 de Marzo de Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura.
Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros.
M.I. María Luisa González Ramírez Servlets y JSP.
CGI.   Cuando el World Wide Web inició su funcionamiento como lo conocemos, empezando a tomar popularidad aproximadamente en 1993, solo se podía apreciar.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
JSP COOKIES. cookies  Las cookies son datos guardados por los navegadores a instancias del servidor.  Los sitios Web las utilizan con propósitos diversos:
Borland User Group - Guatemala Desarrollo de Servlets con Borland JBuilder 2006 Mario Enríquez Open Consult Diciembre 2006.
JAVA. Introducción Que es java?  Código reusable  Multiplataforma.
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tecnologías para el desarrollo de aplicaciones Web
Igor Santos Grueiro. Ahora tenemos datos y datos …
Ingeniero Anyelo Quintero
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Servlets, JSP, JavaBEANS,JDBC
Java Server Faces.
Una java servlet es un programa que se ejecuta en un servidor. Por lo general son aplicaciones Java que corren en un entorno de servidor web. Los Java.
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
Patrones Creacionales
Servlets 18 de Marzo de Índice ¿Qué es un Servlet? ¿Cuándo y por qué usar Servlets? Estructura básica de un HttpServlet Servlet simple que genera.
TEMA 6. Applets y servlets
PROTOCOLO H T T P.
CURSO STRUTS 2 RESUMEN Resumen de lo visto en este primer módulo de INTRODUCCIÓN al framework Struts 2 Debes tener los conceptos muy claros sobre: Framework.
“SERVLETS”. Paola Rojas Contreras Juan Villarroel Leiva José Miguel Perez V. Departamento de Electrónica.
Sistemas Cliente-Servidor Introducción. Sistemas cliente-servidor Servidor Cliente Petición Respuesta.
Fernando Alonso Blázquez Nicolás Serrano Bárcena Servlets 8 de Abril de 2008.
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
Desarrollo con Servlets. Servlets: Introducción  Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java.
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Mario Osvaldo Bressano Servlets. Mario Osvaldo Bressano Arquitectura de 2 Capas.
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Aplicaciones Web de Servidor
Formularios La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con.
Servlets 10 de Mayo de 2006.
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Sun Microsystems. Los servlets son objetos que corren dentro del contexto de un contenedor de servlets y extienden su funcionalidad. También podrían correr.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
Tema 6 – Servicio de Correo Electrónico
HTTP Session Management Desarrollo de Aplicaciones para Internet.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
 Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java a los CGIs (Common Gateway Interface) para construir.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Temario Java 2 Enterprise Edition Arquitectura Especificación Servlets Contenedores Cookies Sesiones.
Softlogia S.R.L. Formación de Recursos Humanos Java Server Faces Instructor: Martin R. Baspineiro.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Transcripción de la presentación:

Servlets Roberto Moriyón

Servlets, I Objetos java, componentes web contenidas en un servidor (contenedor de servlets) que los reutiliza, que reciben peticiones mediante una URL y generan respuestas Mantienen información mediante cookies HTTP, objetos de sesión y de aplicación y reescritura de la URL Normalmente generan código HTML

Servlets, II Los servlets no son aplicaciones, sino partes de aplicaciones que gestionan información que puede tener un contexto más amplio que el del código escrito por el desarrollador (contexto de sesión o de aplicación). Los servlets proporcionan medios para almacenar información válida en los contextos de sesión y de aplicación y para acceder a ella.

Contenedores: Optimizaciones Los contenedores no crean y destruyen objetos constantemente, sino que los reaprovechan mediante pools o caches. –Los contenedores se pueden configurar especificando el número de items en caches y pools de objetos almacenados para su reutilización Tecnologías previas, como CGI, crean un proceso por cada solicitud

Procesamiento de una petición http URL de la petición: Servidor: (crea objetos si hace falta) –Asocia applId/servletPath a objeto Servlet –Prepara objetos request y response –Llama al método doGet(req, resp) o doPost(req, resp) del Servlet resp escribe en su Writer Envía el texto acumulado en el Writer

Procesamiento de la información en una petición http Las cuestiones marcadas en rojo tienen que ser programadas (en Java o mediante fichero de configuración) Los parámetros de la petición están disponibles en el objeto HttpServletRequest. Otros datos como la dirección del cliente (remoteAddr) y la URL de la petición (requestURL) también.

Servlets, III Corresponden a una subclase de HttpServlet Su fichero compilado se guarda en un subdirectorio WEB-INF/class Métodos esenciales: –doGet(request, response) –doPost(request, response) –PrintWriter response.getWriter() –String request.getParameter(String)

Servlets, IV Los atributos no estáticos de una subclase de HttpServlet no tienen utilidad en general. Puede ser útil definir métodos específicos de la subclase, llamados por doGet o doPost.

Servlets, IV HttpServlet requestresponse writer requestURL remoteAddr(parámetros)

Ejemplo: SimpleServlet.zip, I public class SimpleServlet extends HttpServlet { protected void doGet (HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println(" Simple "); out.println(" Hello, “ + request.getRemoteAddr () + “. ”); out.close(); } }

Ejemplo: SimpleServlet, II Ejecución: –Hello, Ficheros relevantes: web.xml + SimpleServlet.java Configuración (web.xml): –Entrada: SimpleServlet

Desarrollo y despliegue de aplicaciones web Complejidad: árbol de directorios Fases: –Compilación .class –Construcción .war,.ear, … –Despliegue  aplicación/módulo en servidor

Despliegue y pliegue de aplicaciones web Despliegue: alternativas –Copiar fichero.war en /domains/domain1/autodeploy –Ejecución de un objetivo Ant (script, build.xml) –Ejecutar deploy (o run)desde NetBeans Pliegue –asadmin undeploy – -> Aplicaciones Web -> Anular implementación

ANT Script: build.xml Objetivos (Compilar, desplegar, …) –Pueden estar satisfechos –Pueden depender de otros objetivos –Pueden utilizar variables ant deploy

NetBeans Proyecto (módulo) –Categoría: Java Web, Web Application –Nombre (context path) –Servidor (GlassFish 3) –Versión Java EE: 6 Acciones: Build (compila y genera *.war), Deploy (despliega), Run, Generate JavaDoc, … (usan fichero Ant generado automáticamente) Crea fichero build.xml y directorio de configuración nbproject

Configuración de módulos web Los Servlets se crean y destruyen por iniciativa del contenedor web, que también activa sus métodos. Un fichero de configuración permite especificar estos procesos. El fichero web.xml contiene información utilizada por el servidor de aplicaciones y el contenedor web en su funcionamiento.

Información de configuración de módulos web Inicialización de parámetros de la aplicación Lista de servlets y otras componentes Inicialización de parámetros de las componentes Asociación de URLs a componentes

Estructura básica de fichero de configuración Web.xml Título Servlets: –Nombre –Clase –URLs (plantillas) //

Ejemplo de fichero de configuración web.xml Simple servlets.Simple Simple /

Ejercicios [NombreYClub] Desarrollar una aplicación web que incluya la página HTML del ejercicio STATIC así como un servlet que conteste a la URL UUU:8080/NombreYClub?nombre=XXX&club=YYY con una página que diga “Hola XXX, Viva el YYY!”

Ejercicios, II [SERV1] Escribir una aplicación web que complete el ejemplo visto como sigue: –El servlet SimpleServlet saluda al usuario utilizando su IP y utiliza un formulario para pedirle el nombre –El servlet adicional NameServlet saluda al usuario utilizando su nombre [SERV2] Aplicación web con un servlet que evalúa operaciones numéricas (sumas, restas, productos y divisiones)

Ejercicios, III [SERV3] Aplicación web con un servlet que pide un número y se llama a sí mismo de nuevo. Además, el servlet muestra la suma de las cantidades introducidas hasta el momento por todos los usuarios.

Recordatorio Los servlets no son aplicaciones, sino partes de aplicaciones con información que puede tener un contexto más amplio que el del código escrito por el desarrollador (contexto de sesión o de aplicación). Los servlets proporcionan medios para almacenar información válida en los contextos de sesión y de aplicación y para acceder a ella.

Contextos Aplicación: javax.servlet.ServletContext HttpServlet.getServletContext() Sesión: javax.servlet.http.HttpSession HttpServletRequest.getSession() HttpServletRequest.getSession(t) Petición: javax.servlet.HttpServletRequest

Contextos, II Los contextos son objetos que pueden guardar información en atributos (un mapa de asociación) mediante los métodos Object getAttribute(String) void setAttribute(String, Object) El contexto de aplicación se pierde si el servidor se apaga. Hay mecanismos para guardarlos y cargarlos automáticamente, basados en eventos. Se pueden definir para eventos más generales.

Ejercicios [SERVCONT1] Aplicación web que pide una lista de números y muestra la suma de ellos pidiendo a la vez otra lista, así como la suma de todos los que se han introducido en la misma sesión y de los que se han introducido desde que se arrancó la aplicación. [SERVCONT2] (Voluntario) Aplicación web que permite guardar dos listas de objetos: una que se mantiene y se puede modificar durante una sesión y otra común que se mantiene y se puede modificar en cualquier momento y por cualquier usuario.

Ejercicios, II [SERV S] (Voluntario) Aplicación web con tres funcionalidades accesibles a través de URLs diferentes: añadir personas y direcciones de correo electrónico a una lista común, ver la lista de personas y correos electrónicos y pedir la dirección de correo electrónico correspondiente a un nombre.

Servlets, III Servlet RequestResponse Session PrintWriter (atributos) (parámetros) EncodeURL RequestURL RemoteAddr ServletContext (atributos) RequestDispatcher include(…)forward(…) (atributos) (parámetros)

Invocación de otros recursos ServletContext.getRequestDispatcher(String url) [Prepara un recurso de la aplicación para su utilización subsiguiente en la sesión] RequestDispatcher.forward(request, response) [Reenvía la solicitud. Antes de escribir en el PrintWriter de la respuesta] RequestDispatcher.include(request, response) [Solicita la respuesta y la añade a la propia] HttpServletResponse.sendRedirect(“String url”) [Reenvia la solicitud a un recurso externo]

Ejercicios [SERVRED] Aplicación web que pide una URL y si es de la UAM la muestra y si no, no. [SERVFILTER] (Voluntario) Aplicación web que permite gestionar un filtro de acceso a dominios de Internet.

Eventos en el ciclo de vida de Servlets Cada vez que se crea o se destruye un contexto (ServletContext, HttpSession o ServletRequest) o se modifica uno de sus atributos, se emite un evento que reciben los objetos (listeners) registrados para ello, ejecutando acciones especificadas en el programa. Por ejemplo, un listener puede hacer que al crearse una sesión se cree una conexión a una base de datos y que todo cambio en un atributo se traslade a ella. Los mecanismos anteriores se configuran mediante el fichero web.xml.

Eventos en el ciclo de vida de Servlets, II ServletContextSessionRequest Iniciación, destrucción: ServletContextListener ServletContextEvent Creación, invalidación, activación, pasivación: HttpSessionListener HttpSessionEvent HttpSessionActivationListener Comienzo de procesamiento: ServletRequestListener ServletRequestEvent Creación, borrado o cambio de atributo: ServiceContextAttributeListener ServiceContextAttributeEvent Creación, borrado o cambio de atributo: HttpSessionAttributeListener HttpSessionAttributeBindingEvent Creación, borrado o cambio de atributo: ServletRequestAttributeListener ServletRequestAttributeEvent

Eventos en el ciclo de vida de Servlets, III MyKewlListener com.examscam.web.listener.MyKewlListener.

Filtros Permiten hacer acciones sobre la petición (Request) y la respuesta previas al tratamiento de la petición. Ejemplo: Mantenimiento de un contador de usuarios e inserción de su valor como atributo de la respuesta. Pueden servir para varios servlets simultáneamente. Los ficheros se configuran mediante el fichero web.xml.

Configuración de filtros Timer kief.FD.TimerF Servlet timing. Timer /*

Otros aspectos configurables en aplicaciones web (web.xml) Escuchas (Listeners) Filtros (Filters) Duración de la sesión Parámetros de contexto Páginas de inicio y error Páginas JSP Lista de páginas JSP especiales Propiedades de grupos de páginas JSP Recursos (bases de datos, enlaces, …) Seguridad

Ejercicios opcionales [BLINDA ] Blindar la aplicación de gestión de contactos comunes por correo electrónico contra fallos en el servidor. [ SERVUTILS] Extraer clases útiles para otros programas.

Concurrencia: Precauciones Si un servidor recibe varias peticiones dirigidas a la misma URL que corresponde a un servlet, el contenedor de servlets ejecuta en hilos diferentes el método doGet o doPost sobre el mismo objeto de la clase correspondiente en vez de crear una instancia para cada petición. Como consecuencia de lo anterior, los atributos de la clase del servlet son compartidos por todas las peticiones.

Concurrencia: Precauciones, II Cualquier variable o recurso cuyo estado tenga un ámbito más amplio para la aplicación que la ejecución del método doGet o doPost tiene que ser sincronizada explícitamente Ejemplo: Saldo de una cuenta corriente (independientemente de que se guarde en el servlet o en una base de datos) No es recomendable usar atributos de servlets para información actualizable

Control de la sincronización en Java Todo objeto tiene un candado. Si un bloque de código se declara como sincronizado con x, se ejecuta cuando x deja de estar bloqueado y lo bloquea durante su ejecución. Ejemplo: f(); synchronized(x) { g(); } h();

Ejercicios [SERVCONC1] Reescribir la aplicación web del ejercicio [SERVCONT1] para evitar problemas de concurrencia. [SERVCONC2] (Voluntario) Reescribir la aplicación web del ejercicio [SERVCONT2] para evitar problemas de concurrencia. [SERVCONC3] (Voluntario) Reescribir la aplicación web del ejercicio [SERV S] para evitar problemas de concurrencia.