Download Unidad 3 ARquitectura J2EE y Servlets
Document related concepts
no text concepts found
Transcript
PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE ARQUITECTURA J2EE Principios de Funcionamiento de Aplicaciones WEB El HypertText Markup Language (HTML) se concibió como una herramienta fundamental de Internet para la creación de páginas WEB. El concepto esencial es poder acceder desde una página WEB a cualquier otra página WEB almacenada en alguna computadora ubicada en cualquier parte del mundo. Para lograr esto primero se definió la forma en la cual se iban a compartir las mencionadas páginas. Por un lado existen los denominados programas Servidores los cuales alojan las páginas WEB y que son capaces de brindar las mismas a quienes se las solicitan. Por otro lado existen los denominados programas Clientes, los cuales solicitan páginas WEB a los programas Servidores y procesan las páginas WEB que estos últimos les envían para mostrarlas en pantalla. La forma en las que interactúan los programas Servidores con los programas Clientes está definida en el denominado Protocolo HyperText Transfer Protocol (HTTP) tal como lo muestra la Figura 1. Figura 1. Gestión de Páginas WEB usando el Protocolo HTTP Los programas Clientes más populares para la gestión de páginas WEB son los Browser (ej: Internet Explorer, Mozzila, etc) los cuales son los encargados de realizar las peticiones de páginas WEB usando el protocolo HTTP para luego traducir el contenido de las páginas WEB recibidas en el formato más adecuado ya que pueden interpretar el lenguaje HTML. Desde la perspectiva de su relación con JAVA hay que destacar que todos los browsers más importantes soportan JAVA, lo cual implica que disponen de una JAVA Virtual Machine (JVM) por medio del sistema de plug-in (denominado JAVA plug - in). Los plug-in son aplicaciones que se ejecutan controladas por otra aplicación principal (en este caso el browser) y que permiten extender sus capacidades (por ejemplo en los browser los plug-in permiten soportar nuevos formatos de audio o video). Los programas Servidores a veces se denominan Servidores WEB. Son programas que se encuentran permanentemente esperando a que un programa Cliente realice una solicitud de páginas WEB mediante HTTP. Al recibir la solicitud interpreta la llamada estableciendo una conexión mediante la cual envía la página solicitada. Bajo este concepto muchas veces también se denomina a la computadora que posee el browser CLIENTE y a la computadora que posee el Servidor WEB se la denomina SERVIDOR, tal como se observa en la Figura 2 Figura 2. Interacción entre Cliente y Servidor para la gestión de páginas WEB 1 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE Al principio solo se requería poder compartir información en formato de texto. Como consecuencia las páginas WEB tenían las siguientes características: • Contenido estático • Presentación pobre y limitada • No es necesario mantener el estado de las páginas Respecto de la última característica, es necesario mencionar que el protocolo HTTP es no permanente. Esta característica significa que una vez que el programa Servidor ha brindado respuesta a la petición del programa Cliente la conexión se pierde. La ventaja de esto es que es difícil que el SERVIDOR colapse o se sature, mientras que la desventaja es que no permite mantener el estado del usuario que realiza las diversas conexiones (esto complica la seguridad cuando los accesos se realizan usando password, ya que el mismo no se puede mantener en ningún lado). A medida que se popularizó el uso de las páginas WEB se hizo necesario dotar a los programas Servidores y Clientes de mejores características: • • Los programas clientes exigían mejores estilos de presentación, a lo que se ha denominado presentación rica, lo cual se ha logrado permitiendo que interpreten javascripts, applets, Active X, java server faces, etc. JavaScript es un lenguaje interpretado cuyo código se introduce en las páginas HTML mediante el uso de tags <SCRIPT> </SCRIPT>, por lo tanto estos residen junto con las páginas WEB en el SERVIDOR. Los applets son clases JAVA que se cargan y se ejecutan en el programa Cliente, pero que también residen en el SERVIDOR. Java Server Faces (jsf) es un framework que permite obtener presentaciones ricas logrando que la interfaz pueda ser gestionada de una forma similar a la jerarquía de objetos de SWING, además de proporcionar diversas formas de generar presentaciones elegantes. Los programas servidores pasaron de ser simples proveedores de páginas WEB estáticas a poder usarse en la gestión de aplicaciones. Al principio se usaron los programas Common Gateway Interface (CGI) en conjunto con los formularios HTML, para posibilitar que el usuario pueda realizar el ABM de información usando páginas WEB. De esta forma el Servidor WEB podía buscar una página WEB o ejecutar un programa ubicado en el SERVIDOR, aunque siempre su respuesta es un resultado de tipo HTML para el browser. Posteriormente permitieron almacenar applets y javascripts (Figura 3) que eran interpretados por los browser. Esto ataba la eficiencia de la aplicación al browser lo cual podía provocar diversos problemas. Cuando se hizo necesario la gestión de contenidos dinámicos los Servidores WEB debieron interactuar con los contenedores WEB. Los contenedores WEB son quienes realmente almacenan y ejecutan la aplicación WEB (por ello se denominan Server Side Applications, en español aplicaciones del lado del SERVIDOR) mediante la gestión de servlets, jsp, gestión de frameworks como Struts y jsf, etc. De esta forma el Servidor WEB solo se encarga de recepcionar peticiones HTTP, derivarlas al contenedor WEB y devolver las respuestas al browser en la forma de páginas HTML. El contenedor WEB se explicará en el siguiente apartado. Figura 3. Extensión de funcionalidades del browser y el servidor WEB para ejecución de aplicaciones estáticas 2 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE Resumen de evolución de la gestión de contenidos dinámicos en aplicaciones WEB Existen Servidores WEB que poseen módulos que permiten extender su funcionalidad. Por ejemplo el servidor WEB Apache posee un módulo que permite ejecutar PHP. También posee un módulo que le permite actuar como un Contenedor WEB para aplicaciones JAVA denominado TOMCAT. Ya se mencionó que los contenedores WEB permiten almacenar y ejecutar aplicaciones WEB. En el caso de JAVA los contenedores WEB deben soportar los denominados SERVLETS. Los SERVLETS son clases JAVA que se ejecutan en un contenedor WEB permitiendo la generación de páginas WEB de forma dinámica, por esta razón los contenedores WEB para JAVA se denominan muchas veces contenedores de SERVLETS (Servlet Containner) tal como lo muestra la Figura 4. Figura 4. Arquitectura de contenidos dinámicos para aplicaciones WEB usando SERVLETS Con esta arquitectura se puede desarrollar aplicaciones WEB usando JAVA, se programan los Servlets, los cuales poseen la lógica de negocio y además definen la forma en que se genera el contenido de las páginas HTML. Posteriormente son almacenados en el contenedor WEB a la espera de que sean requeridos (al proceso de almacenar y dejar preparados a los servlets para su ejecución se denomina despliegue). Con el tiempo se detectó que existía un gran inconveniente al trabajar con los servlets de forma pura, se mezcla la lógica de negocio con la lógica de la presentación. Como se mencionó en el párrafo anterior se debe programar ambas cosas en un servlet. Por esta razón se procedió a realizar el camino inverso: En vez de programar el HTML dentro de un servlet lo que se hizo es generar un tipo especial de página WEB con extensión .jsp denominado JAVA Server Page (jsp) que es básicamente una página WEB con HTML tradicional y código JAVA inmerso. Con este estilo se lograba poder determinar las secciones de la lógica de presentación usando HTML y para la gestión de la lógica de negocio se utilizan tags especiales de jsp. De esta forma sobre los JSP los diseñadores WEB podían realizar su trabajo de forma independiente de los diseñadores de la lógica de negocio tal como lo presenta la Figura 5. Figura 5. Arquitectura de contenidos dinámicos para aplicaciones WEB usando JSP Aún así el código dentro de una jsp en muchas ocasiones resultaba ser desordenado. Para solucionar esto los programadores desarrollaban tags jsp personalizados (Custom tags) que 3 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE permitían encapsular diversas acciones comunes logrando separar aún más la lógica de negocio de la lógica de presentación. De estos trabajos posteriormente se generaron lo que se denomina JAVA Standard Tag Library (JSTL) la cual es una especificación de JAVA 2 Enterprise Edition controlada en su momento por Sun MicroSystems que define un conjunto de tags simples y estándares que encapsulan la funcionalidad principal que es usada principalmente para escribir páginas jsp. Sobre esta base (aplicaciones WEB basadas en jsp y JSTL) se aplicó el patrón Model View Controller (MVC) con el objetivo de facilitar el proceso de direccionamiento de peticiones y establecer una clara separación entre la lógica de negocio y la lógica de presentación. La clave de este patrón es que la gestión de solicitudes y su direccionamiento la realiza el Controller, ahorrando de esta forma al programador la gestión de este aspecto. El Controller sería entonces un SERVLET específico dedicado al direccionamiento de peticiones. El Model contiene todas las clases JAVA u otros SERVLETS encargados de brindar los servicios sobre base de datos, archivos, etc. El View contiene principalmente las páginas jsp. De esta forma la idea principal es que el browser realice una petición al contenedor WEB, esta la captura y la envía al Controller, el cual define la acción a realizar. Para ilustrar esto se procede a describir el siguiente ejemplo: La acción puede ser solicitar un servicio al Model (por ejemplo una colección de objetos que fueron obtenidos desde una Base de Datos). Una vez que Model realiza el servicio solicitado devuelve el control al Controller. Controller deriva la colección de objetos a una página jsp ubicada en el View, es decir Controller delega su control a la página jsp, la cual genera el código HTML necesario para mostrar el contenido de los objetos. Una vez hecho esto, el View devuelve el control al Controller, el cual devuelve al Servidor WEB la página WEB y este a su vez la envía al browser la cual la traduce y muestra en la pantalla del usuario. El patrón MVC fue implementado por varios frameworks de cuales se destaca STRUTS, iBatis y Java Server Faces. La evolución de las aplicaciones WEB están en constante movimiento definiendo principalmente alternativas de arquitecturas y tecnologías que se pueden aplicar para facilitar el desarrollo de aplicaciones WEB. Hoy el aspecto principal radica en la capacidad de brindar de forma sencilla y optimas servicios WEB (multimedia, context aware, etc) y presentaciones ricas. Los componentes de aplicaciones WEB con J2EE En el apartado anterior se describió la evolución de las aplicaciones WEB JAVA cuando se requiere que la misma sea almacenada y ejecutada en el SERVIDOR. Se destacó que las principales tecnologías aplicadas son: • Servlets, los cuales serían los equivalentes a los applets, pero que se ejecutan y almacenan en el SERVIDOR (los applets se almacenan en el SERVIDOR pero se ejecutan en el CLIENTE). • Jsp, los cuales al fin de cuentas son Servlets, ya que el contenedor WEB los traduce a servlets cuando los mismos son requeridos. Los jsp son similares a ASP o PHP. Ambos forman parte de lo que se conoce como JAVA 2 Enterprise Edition (J2EE). J2EE es una plataforma para construir aplicaciones WEB completas basadas en JAVA. Se trata de una serie de tecnologías que permiten escribir aplicaciones del lado del SERVIDOR para proporcionar servicios desde redes TCP/IP. J2EE extiende J2SE y permite desarrollar aplicaciones con arquitecturas de n capas distribuidas. Generalmente la arquitectura J2EE se describe como lo muestra la Figura 6. La capa cliente (client tier) admite diversos tipos de clientes (HTML, Applet, aplicaciones JAVA, Flash, etc), la capa intermedia (midle tier) contiene subcapas (el contenedor WEB y el contenedor EJB). La tercera capa denominada Enterprise Information System (Sistemas de Información Empresarial) representan la interacción con diversas aplicaciones empotradas a las cuales se brinda o se requiere servicios, también son denominadas aplicaciones “backend”. Esto significa que J2EE define especificaciones de funcionalidades agrupadas en paquetes denominados contenedores. Estas funcionalidades residen en componentes estandarizados que pueden ser combinados según las necesidades de los desarrolladores. De esta forma las empresas definen los componentes basados en estas especificaciones estándares y entonces el resto de los desarrolladores pueden usarlos. Esto provoca una amplia variedad de opciones tecnológicas al momento de desarrollar aplicaciones WEB, independientes del fabricante e independientes de la plataforma al respetar la filosofía de JAVA. Cabe destacar que J2EE provee 4 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE especificaciones propias de tecnologías JAVA tales como las definidas para el Contenedor Enterprise JAVA Bean (EJB) y el contenedor WEB. En definitiva los componentes J2EE son escritos en lenguaje de programación JAVA y son compilados de la misma forma que cualquier clase JAVA. La diferencia entre los componentes J2EE y las clases java estándares o comunes radican en que: • Los componentes J2EE son ensamblados dentro de una aplicación J2EE. • Los componentes J2EE son verificados para asegurar que estén de acuerdo al estándar J2EE • Los componentes J2EE son desplegados para que se ejecuten y sean administrados por un servidor de aplicaciones J2EE. Figura 6. Arquitectura J2EE de 3 capas Los componentes solo deben ser usados y extendidos para las necesidades propias de la aplicación. Para lograr esto los contenedores proveen un conjunto de descriptores de despliegue (deployment descriptors), los cuales son archivos XML en los cuales se configura el entorno de ejecución: rutas de acceso a aplicaciones, control de transacciones, parámetros de inicialización, etc. Finalmente tanto la capa intermedia como la capa EIS de la plataforma J2EE provee un conjunto de APIs para el acceso a sistemas empresariales, como por ejemplo: JDBC: para la gestión y acceso a Base de Datos desde JAVA. JAVA Transaction API (JTA): permite la gestión de transacciones a través de sistemas heterogéneos. JAVA Naming and Directory Interface (JNDI): permite el acceso a servicios de nombres y directories. JAVA Message Service (JMS): permite el envío y recepción de mensaje por medio de sistemas de mensajería empresarial. JavaMail: gestiona la recepción, envío y configuración del servicio de e-mail. JAVA IDL: permite solicitar servicios a sistemas distribuidos que siguen el estándar definido por CORBA. 5 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE Estructura de los componentes de aplicaciones WEB con J2EE Los componentes web y archivos con contenido estático (por ejemplo imágenes) son llamados recursos WEB. Un módulo WEB es la unidad más pequeña de despliegue y uso de recursos WEB. Además de los componentes y recursos WEB puede contener clases de utilidades del lado del servidor y clases en el lado del cliente. Un módulo WEB posee una estructura definida. El directorio de nivel superior es el document root de la aplicación. El document root es donde se almacenan las páginas jsp, clases, y archivos del lado cliente y recuersos WEB estáticos. El document root contiene un subdirectorio llamado WEB-INF el cual solo es visible por el SERVIDOR y contiene los siguientes archivos y directorios: • • • • • web.xml: descriptor de despliegue de la aplicación web. classess: directorio que contiene las clases del lado del servidor (servlets, clases de utilidad y java beans). lib: directorio que contiene archivos jar de bibliotecas utilizadas por las clases del lado del servidor. tags: directorio que contiene archivos tag, los cuales son implmentaciones de librerías de tags. archivos descriptores de bibliotecas tags: son archivos con extensión tld, que permiten que las páginas jsp reconozcan tags personalizados. Las aplicaciones WEB desarrolladas con JAVA generalmente son empaquetadas dentro de archivos con extensión war y almacenadas de esta forma en el Contenedor WEB. LOS SERVLETS Conceptos preliminares sobre los servicios HTTP: URL Las computadoras son identificadas en Internet usando una dirección IP. Estas direcciones son un conjunto de 4 números entre 0 y 255 inclusive, separados por un punto. (ej: 10.168.123.1). Debido a que para un usuario sería difícil recordar el conjunto de números de una dirección IP es que se les asigna un nombre. En Internet existen unas computadoras especiales, denominadores Servidores de Nombres o Servidores de Direcciones que mantienen unas tablas mediantes las cuales se puede establecer la dirección IP a partir del nombre. Una Uniform Resource Locator (URL) permite localizar un recurso o servicio almacenado en alguna computadora, ya que posibilitan el direccionamiento de personas, archivos y una gran variedad de 6 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE información según los diferentes protocolos o servicios de Internet. De esta forma las computadoras pueden acceder a los recursos que están ubicados en otras computadoras cuando se usa Internet de forma independiente al Sistema Operativo de la computadora. Una URL es una manera sucinta y conveniente para referirse a un archivo o a cualquier otro recurso electrónico ya que en ella se especifica la dirección completa del servicio La forma genérica de una URL es: método://servidor.dominio/ruta completa del recurso Donde método identifica el tipo de servicio o protocolo usado. En el caso del protocolo HTTP (el protocolo diseñado para la WWW) la sintaxis específica es: http://<host>:<puerto>/<ruta> Donde host es la dirección IP del servidor WWW, pudiendo colocar tanto el número como el nombre. El puerto indica a través de que entrada el servidor atiende los requerimientos HTTP (puede ser omitido, en cuyo caso utiliza el valor por defecto). La ruta indica al servidor el path del recurso al que se desea acceder. Por ejemplo: http://www.msn.com.es/index/prev/welcome.htm Accede a una página WEB del Servidor de Microsoft Network, en concreto a la página WEB welcome.htm, cuya ruta de acceso dentro del servidor es index/prev y y cuya dirección IP es reemplazada por el nombre www.msn.com.es. Los nombres de direcciones IP generalmente se dividen en tres campos que se leen de derecha a izquierda. El primer campo es el identificador del país (en el ejemplo identificada por la sigla es, que indica que el país es España). El segundo campo indica el tipo de institución (en el ejemplo la palabra com) El conjunto del primer y segundo campo se denomina Dominio. El tercer campo es el nombre del ordenador, también denominado host. Las URL en ocasiones terminan en /, lo cual significa que no apuntan a un recurso específico sino a un directorio. Dependiendo de cómo esté configurado, el servidor devolverá el índice por defecto de este directorio (el listado de archivos y subdirectorios), un archivo por defecto (generalmente denominado index.htm o index.html) o simplemente impida el acceso al mismo ya que se requiere acceder a un recurso específico (sirve como mecanismo de seguridad). Conceptos preliminares sobre los servicios HTTP: Uso de Formularios HTML Los formularios HTML permiten enviar información al programa Servidor. Cada formulario lleva incluido un campo denominado Action con el que se asocia el nombre del recurso o programa del servidor al que se desea acceder con los datos ingresados en el formulario. Existen dos formas principales de pasar los datos del formulario al programa Servidor: • • Por medio de una variable de entorno del sistema operativo del servidor de tipo String denominado método GET. Por medio de un flujo de caracteres que llega a través de la entrada estándar (stdin o System.in), que por defecto está asociado al teclado, denominado método POST. Que son los Servlets Un servlet es una clase JAVA que se ejecutan en un contenedor WEB que permiten generar páginas WEB con contenido dinámico. Se diferencian de los applets en que se ejecutan en el servidor y en que no presentan ningún tipo de interfaz gráfica. Su funcionamiento radica en un modelo de programación de solicitud-respuesta (el programa Cliente realiza una solicitud y el Servlet almacenado en el contenedor WEB brinda la respuesta). A pesar que los servlets pueden responder a cualquier tipo de solicitud, son comúnmente utilizados para extender aplicaciones que se ejecutan en servidores Web. Para este tipo de aplicaciones, la tecnología Java Servlet define clases específicas HTTP. Los paquetes javax.servlet y javax.servlet.http proveen interfaces y clases para escribir Servlets. Todos los servlets deben implementar la interfaz Servlet, que define los métodos del ciclo de vida. Cuando se implementan servicios genéricos, se puede usar o extender la clase GenericServlet provista por la API Java Servlet. La clase HttpServlet provee métodos, como doGet y doPost, para manejar servicios específicos HTTP. 7 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE Los servlets son mapeados a URLs y sus ciclos de vida son manejados por un contenedor de arquitectura simple. La tecnología servlet se encuentra disponible en la mayoría de los servidores Web y de aplicaciones y, debido a que está basada en tecnología Java es independiente del servidor y la plataforma. Arquitectura de un Servlet Un Servlet hereda de la clase abstracta HttpServlet. Esta clase permite que la clase JAVA creada herede los métodos doGet(HttpServletRequest request, HttpServletResponse response), doGet(HttpServletRequest request, HttpServletResponse response), init() y service(). Los dos primeros métodos permiten la gestión de la información adjuntada en la petición de un usuario y a la vez configurar la respuesta a la petición. El programador por lo tanto debe sobrescribir si son necesarios estos métodos, dependiendo de si la invocación del Servlet se realizó usando el método GET o POST de la propiedad Action del formulario HTML. Ambos métodos reciben dos parámetros muy importantes al momento en que el programa Cliente invoca al Servlet: • Interfaz HttpServletRequest: se encarga de la comunicación desde el cliente al servidor, permitiendo acceder a los parámetros pasados por el cliente, el protocolo usado por el cliente, el nombre del host remoto que realiza la solicitud y brinda acceso a métodos para gestionar la presentación de la salida. • Interfaz ServletResponse: se encarga de la comunicación desde el servlet al programa Cliente, permitiendo configurar la forma de la salida (cabeceras de respuesta) y usar el objeto PrintWriter para enviar el contenido de la salida al programa Cliente. El método init() se ejecuta una sola vez cuando el servlet es creado, por lo tanto aquí es donde se debe configurar las acciones que se desean que se realicen al momento de la creación del servlet en vez de programarlas en el contructor. El método service() gestiona los envíos del usuario (request) independientemente de que la petición sea GET o POST. En la Figura 7 se observa un ejemplo sencillo de un Servlet que crea una página WEB con un título y una línea de texto. Observe que se sobreescribió el método doGet() y que no se utiliza el parámetro request (lo cual significa que no se necesita la información que el usuario envía o que simplemente no se envía información desde un formulario HTML) pero si el response, del cual se obtiene un objeto PrintWriter para dibujar la página WEB. Como se ve se mezcla la lógica de presentación con la lógica de negocio. Figura 7. Ejemplo de Servlet 8 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE Modelo de Petición Respuesta usando Servlets Figura 8. Funcionamiento del modelo Petición Respuesta usando Servlets 1. Un contenedor Web recibe solicitudes de los clientes, típicamente en la forma de solicitudes HTTP. En el contenedor WEB se halla almacenada la aplicación WEB. La aplicación WEB consta de una o varias clases JAVA denominadas Servlets. 2. La solicitud HTTP es derivada al Servlet correspondiente por medio del descriptor de despliegue web.xml. Esto es posible debido a que la solicitud del programa Cliente contiene una URL la cual está mapeada en el descriptor web.xml al Servlet correspondiente. Posteriormente la información de la solicitud es capturada por el objeto HTTPServletRequest del método doGet() o doPost(). 3. El servlet luego extrae cualquier información ingresada por usuario de la solicitud HTTP y genera contenido en forma dinámica o procesa lógica de negocio. El procesamiento de lógica de negocio puede involucrar acceder a una base de datos o invocar componentes EJB en la capa EJB. 4. Una vez que se haya generado contenido y/o se haya realizado procesamiento de lógica de negocio, el servlet crea una respuesta HTTP y la envía de regreso al cliente o puede reenviar la solicitud a otro servlet o página JSP, en todos los casos utiliza el parámetro response. Obtención de parámetros Sea el siguiente fragmento de una página HTML: Observe que en la propiedad Action se invoca al Servlet cuyo nombre es TestServlet, mediante el método POST. La Figura 9 muestra el código del método doPost() del mencionado Servlet. Observe que el parámetro req posee un método denominado getParameter() y getParameterValues() el cual permite obtener los valores asignados a un componente de un formulario. Observe que se debe pasar a los métodos el nombre de los componentes. Estos se pueden obtener de la propiedad name 9 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE de los componentes (en el caso del input type es searchstring y el caso del conjunto de options es state). Figura 9. Ejemplo de obtención de valores desde el parámetro de tipo HtppServletRequest Cuando los nombres de los parámetros no son conocidos se puede usar el método getParameterNames() para obtener los mismos. OBJETIVO DE LA CLASE • • Evaluar los conocimientos previos individuales de los alumnos al iniciar la asignatura. Detectar fortalezas y debilidades individuales de los alumnos en la programación orientada a objetos EL CASO A PRESENTAR Se plantea la necesidad de registrar la venta de artículos deportivos en una tienda. Los clientes solicitan uno o varios artículos al empleado. Una vez que la venta se confirma se genera un comprobante de venta. El comprobante debe registrar el empleado, el cliente, la fecha y los artículos vendidos. Por tal motivo se plantea el siguiente diagrama para representar las entidades en el diseño de la BD: A continuación se describe los atributos de las entidades del diagrama ARTICULOS Tipo Nombre Descripción @ N(5) Codigo Clave primaria + C(20) Descripción Nombre artículo, obligatorio + N(4) Stock Cantidad en stock, obligatorio + N (6,2) Precio Precio artículo, obligatorio 10 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE CLIENTES Tipo Nombre Descripción @ N(5) Codigo Clave primaria + C(10) Dni dni, obligatorio + C (50) Nombre nombre, obligatorio EMPLEADOS Tipo Nombre Descripción @ N(5) Codigo Clave primaria + C(4) Legajo legajo, obligatorio + C(50) Nombre nombre, obligatorio VENTAS Tipo Nombre Descripción @ N(7) Codigo Clave primaria + C(15) Num_transacción Obligatorio, único + D() Fecha fecha, obligatorio {dd/MM/yyyy} # N(5) Empleado Clave foránea EMPLEADOS # N(5) Cliente Clave foránea CLIENTES DETALLE_VENTAS Tipo Nombre Descripción # N(7) venta Clave foránea VENTAS # N(5) articulo Clave foránea ARTICULOS + N(6,2) Precio_venta Precio del artículo en la venta + N(4) cantidad Cantidad del artículo que se ha vendido # N(5) empleado Clave foránea EMPLEADOS # N(5) cliente Clave foránea CLIENTES El alumno puede agregar, eliminar o rediseñar el diagrama y las entidades siempre y cuando tenga sentido. SOLICITUDES 1) Generar las tablas en Oracle para el diseño planteado. 2) Realizar un print – screen de la estructura de las tablas creadas 11 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 – AÑO 2010 UNIDAD 3: Introducción a la plataforma J2EE 3) Generar en clase el ABM de artículos, clientes y empleados usando HIBERNATE. El registro de la venta lo debe realizar el alumno en su casa y traerlo en la fecha de entrega del práctico. 4) Generar un reporte de clientes, artículos y empleados usando Jaspert Report. 12 Profesor Adjunto: Ariel Alejandro Vega – Ayudante: Carlos Pintor