La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Servlets Roberto Moriyón. Servlets, I Objetos java, componentes web contenidas en un servidor (contenedor de servlets) que los reutiliza, que reciben."— Transcripción de la presentación:

1 Servlets Roberto Moriyón

2 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

3 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.

4 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

5 Procesamiento de una petición http URL de la petición: http://serverId/applId/servletPath?params 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

6 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.

7 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)

8 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.

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

10 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(); } }

11 Ejemplo: SimpleServlet, II Ejecución: http://localhost:8080/Simple/ –Hello, 127.0.0.1. Ficheros relevantes: web.xml + SimpleServlet.java Configuración (web.xml): –Entrada: SimpleServlet

12 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

13 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 –http://localhost:4848/asadmin -> Aplicaciones Web -> Anular implementación

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

15 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

16 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.

17 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

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

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

20 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!”

21 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)

22 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.

23 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.

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

25 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.

26 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.

27 Ejercicios, II [SERVEMAILS] (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.

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

29 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]

30 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.

31 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.

32 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

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

34 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.

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

36 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

37 Ejercicios opcionales [BLINDAEMAIL] 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.

38 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.

39 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

40 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();

41 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 [SERVEMAILS] para evitar problemas de concurrencia.


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

Presentaciones similares


Anuncios Google