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