Servlets y JSP www.softclear.net Módulo 1 Introducción a Java EE www.softclear.net Java EE También conocida como J2EE ● Especificación del Java Community Process - JCP ● Arquitectura de N capas ● Se ejecuta sobre un “contenedor Java EE” ● Basado en las librerías de Java SE ● Incluye librerías adicionales extensibles ● www.softclear.net Contenedor Java EE Contenedor Web Negocios [JSP y Servlets] [EJB] Servicios Conectores Ofrece servicios transaccionales, de seguridad, escalabilidad, concurrencia y ciclo de vida de componentes JVM Sistema Operativo Hardware www.softclear.net Tendencias actuales Acceso directo a entidades ● POJO´s – Plain Old Java Objects [Java Beans] ● Foco en patrones de diseño ● Orientado a la web ● Reducción de costos ● Mejora de rendimiento ● www.softclear.net Contenedor Web Marco de trabajo ORM [Object Relational Mapping] JSP Servlet Servicios Conectores Contenedor Web Java EE JVM Sistema Operativo Hardware www.softclear.net Contenedor Web Vista Modelo Controlador Servicios Conectores Patrón MVC JVM Sistema Operativo Hardware www.softclear.net En particular, el contenedor web: Gestiona el ciclo de vida de los Servlets ● Convierte JSP´s en Servlets ● Recibe peticiones HTTP y las representa en objetos ● Emite respuestas HTTP representadas en objetos ● www.softclear.net Llamada a un JSP www.softclear.net Estructura de una aplicación web www.softclear.net Módulo 2 Servlets www.softclear.net ¿Qué es un Servlet? Clase Java encargada de recibir peticiones y responderlas ● Es extensible ● Manejada por el contenedor [ciclo de vida, instancia, etc.] ● El caso común es el uso de HttpServlet ● Su función principal es la de controlador ● www.softclear.net Arbol de herencia www.softclear.net Cuerpo de la clase HttpServlet www.softclear.net Ejemplo de Servlet package com.softclear.controller; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HolaMundoServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ } } res.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<head><title>Hola Mundo</title></head>"); out.println("<body>"); out.println("<h1>Hola Mundo</h1>"); out.println("</body>"); out.println("</html>"); out.close(); www.softclear.net Ejemplo de Servlet Recibe una petición vía GET del protocolo HTTP ● Devuelve una respuesta con código HTML al cliente ● Por si solo, el Servlet no define la dirección IP y el puerto por donde va a escuchar y a atender peticiones ● El descriptor de despliegue se encarga de esta tarea ● www.softclear.net Descriptor de Despliegue Ofrece información sobre el contenido de la aplicación ● Configura los parámetros necesarios para su funcionamiento ● Registra variables locales a la aplicación ● Registra constantes de la aplicación ● Ubica recursos requeridos por los componentes web ● El nombre por defecto del archivo descriptor de despliegue es web.xml ● www.softclear.net Ejemplo web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name> Proyecto Servlet </display-name> <description> Mi primer Servlet </description> <servlet> <servlet-name>Hola</servlet-name> <servlet-class>com.softclear.controller.HolaMundoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hola</servlet-name> <url-pattern>/miservlet</url-pattern> </servlet-mapping> </web-app> www.softclear.net Arquitectura www.softclear.net