Tema 2: Diseño de la capa lógica

Documentos relacionados
Tema 2: Diseño de la capa lógica

SERVLETS. Aplicaciones Distribuidas

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Aplicaciones Web (Curso 2015/2016)

Computación Web (Curso 2015/2016)

Computación Web (Curso 2013/2014)

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Aplicaciones Web con Servlets y JSP (I)

envía al browser. El browser despliega el archivo.

Introducción n a Java EE: Servlets

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO

Tema 4: Servidores Web

Java Servlets. Qué es un programa? Luis Fernando Llana Díaz. 22 de abril de input Programa output. En pascal:

Java Session. Usando Java Session en aplicaciones web

Servidores Web. Tema 4: Acceso a Páginas Web en ficheros. Output. GET /index.html. Server host. HTTP server: Apache, IIS SO Unix.

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos

Invocar a Recursos Web

Capitulo 7: Tecnologías de la Capa Media, Lógica del Negocio.

Creación de la base de datos

En principio cada aplicación web se encuentra aislada y es independiente de las otras.

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

Servlets. 1. Introducción Características fundamentales Ventajas fundamentales... 2

Implementando nuestro primer servlet

JSP/SERVLETS ISIS 3710

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages)

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Ejemplos de Servlet y JSP Web Application Development

Tema 7: Servidores Web (II) Contenidos

Clase Java que implementa un modelo de programación peticiónrespuesta. Puede usarse para procesar cualquier tipo de petición

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages)

Servlets (I) Mario Muñoz Organero & Norberto Fernández Departamento de Ingeniería Telemática

Servidores web. Mecánica de funcionamiento

Tema 3: Diseño de la capa de presentación

Curso de Java Java para Web

JAVA: Servlets. Diseño de aplicaciones web.

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Desarrollo de aplicaciones para Internet

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Requisitos. Universidad ORT Arquitectura de Software

Java y CDI sobre JEE 6 (JSR 330)

Sistemas de Información 12/13 Ejercicios Tecnologías Web

Tema 3: Diseño de la capa de presentación

Aplicacions web bàsiques Introducció a servlets i JSP

3 PROGRAMACIÓN WEB CON SERVLETS

J2EE Java 2 Enterprise Edition

Hello World Ajax! con Eclipse

Servidores Web (II) Contenidos

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Gestión de Registros y Respaldos en el Contexto Hospitalario.

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor.

Introducción a las aplicaciones WEB

Java 2 Enterprise Edition

HTTP, CGI, Applets y Servlets

INTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA

PROGRAMACIÓN JEE CON SERVLETS

Sistemas de Información

Carrito de Compras con Servlet, Arreglos y Sesiones

Aplicacions web bàsiques Introducció a servlets i JSP

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

JSP Básico. Índice. 2 Traducción de los JSP a servlets Acciones Introducción a JSP... 2

Servlet 3.0 (II) Servlets Asincronos

Framework 1. Web en Java. (solo aplicaciones en mantenimiento)

Introducción a los servlets

Qué ofrece Autentia Real Business Solutions S.L?

Conexión de Mysql con NetBeans

qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer

Java web: servlets, Jsp, Jstl, Struts & Ajax

Desarrollo Web. Parte 1 Edición Taller de Programación

Servlets. Tema 3. Servlets

INSTALACIÓN JAVA DE SUN ORACLE

javax.servlet.genericservlet javax.servlet.http.httpservlet MiServlet

Arquitectura Web Multicapa. Tema 6.a: Arquitectura sistema en capas. Ventajas de los sistemas. distribuidos. Arquitectura software en capas

(de documentos 09-JSP-Intro.pdf y 10-JSP-Scripting- Elements.pdf) Página 296

Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2

Práctica 2: Extensión de un servidor con servlets

[CASI v.0109] Pág. 1

Tema 3: Tecnologías Java distribuidas

2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA

(Dibujo de arquitectura de Ebay) Arquitectura software en capas. Arquitectura Web Multicapa. Tema 6: datos: ficheros o bbdd. 2. Capa Presentación:

Práctica Servlets & JDBC. Qué son? Qué necesitamos?

Diseño de la capa de presentación. Aplicaciones Distribuidas

Aplicaciones Cliente - Servidor

Curso Java Web (JSP's/Servlets)

Aplicaciones web con Tomcat y MySQL en Linux

Guía N 8 Tema: SERVLETS y JDBC

Tutorial Web Dinámica con Servlets y JSP Sesion 3

Tema 6: Arquitectura Web Multicapa

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response.

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTÓ

11. Sesión en Servlets

JAVASERVER PAGES (JSP)

Java Web J2EE con JSP

Java Web J2EE con JSP

Transcripción:

escuela técnica superior de ingeniería informática Tema 2: Diseño de la capa lógica Departamento de Lenguajes y Sistemas Informáticos Ingeniería del Software de Gestión III

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Modelo conceptual CreditCard -firm : string -holder : string -month : int -number : string -year : int 1 Informacion de pago Customer -customerid : string -name : string -surname : string 1 Address -city : string -email : string -fax : string -phone : string -name : string -state : string -street : string -zipcode : int Tiene 1 ItemProcessor POSProcessor 1..* Order 1..* Entrega +listitems() +getitem(entrada pid : string) : Item +placeorder(entrada o : Order) +retrieveorder() : Order +listorders() : <sin especificar> +cancelorder(entrada OrderID : string) -orderid : string -timeplaced +hasproduct() : bool +adddetail() * 1 Item 1..* 1 -productid : string -description : string -price : int «interfaz» IPOSProcessor +placeorder(entrada o : Order) +retrieveorder() : Order +cancelorder(entrada oid : string) +listorders() : <sin especificar> Detail -itemid : string -quantity : int -note : string 1..* «interfaz» IItemProcessor +listitems() : <sin especificar> +getitem(entrada pid : string) : Item

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Recordatorios Cómo mapear un MC a código La interfaz Map y HashMap Uso de variables de tipo interfaz Algunos problemas: Parámetros en Java: Literales: por valor Objetos: por referencia arrays: por referencia Qué pasa con la devolución de getdetails():map?

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Aplicación web y sus problemas El problema de la concurrencia El problema del intercambio de datos Envío de datos con valor único Envío de datos multievaluados El problema de la presentación de datos (HTML/XML) El problema del mantenimiento del estado

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Introducción a HTTP Aplicación web Características básicas Ciclo de vida, concurrencia Petición y respuesta Ejemplo El problema del estado Parámetros de entrada Extraer información del servidor Extraer información del cliente

Servlets, Introducción a HTTP HTTP (HyperText Transport Protocol) Protocolo sin estado, es decir, se abra una conexión por cada petición URL (Universal Resource Location): http://www.lsi.us.es:8080 Puertos utilizados: 80 por defecto, 8080 Métodos GET, POST Otras alternativas: CGI-PHP-ASP

Servlets, Aplicación web Definición: Un conjunto de servlets, JSPs, ficheros, HTML, imágenes, etc.. dispuestos de tal manera que sean fácilmente desplegables (deployed) en un contenedor web. Tomado de [Brittain03]

Servlets, características básicas Definición Servlet: Es un componente software escrito en JAVA que dinámicamente extiende la funcionalidad de un servidor genérico Son una especificación (usaremos 2.3 / tomcat 4.1.30). Características: Capaz de funcionar en el mismo proceso del servidor Contienen código compilado (hasta el nivel del servidor, puesto que después hay un.class) Es multiplataforma, multiservidor Paquetes necesarios: javax.servlet.*; javax.servlet.http.*

Servlets, características básicas <<interface>> Servlet init() destroy() <<abstract>> GenericServlet <<abstract>> HttpServlet doget() dopost() MiServlet

Servlets, ciclo de vida init() DarServicio destroy() service() A petición del cliente el contenedor carga el servlet y llama a init() El servidor espera peticiones y las trata A petición del administrador, el servidor descarga el servlet y llama a destroy() NOTA: Dependiendo de la implementación del servidor cada petición puede: i) crear su propia instancia del servlet, es decir, se llama a init() cada vez que hay una petición ii) crear una sola instancia del servlet

Servlets, petición y respuesta <<abstract>> HttpServlet doget(httpservletrequest request, HttpServletResponse response) dopost(httpservletrequest request, HttpServletResponse response) <<interface>> ServletRequest <<interface>> ServletResponse

Servlets, tratar la petición <<interface>> ServletRequest getparameter(name:string):string getparametervalues(name:string):string[] getparameternames():ennumeration <<interface>> HttpServletRequest

Servlets, tratar la respuesta <<interface>> ServletResponse getwriter():printwriter setcontenttype(type:string) PrintWriter println(out:string) close() <<interface>> HttpServletResponse

Servlet, ejemplo package isg3.servlets; import java.io.ioexception; import java.io.printwriter; import javax.servlet.*; import javax.servlet.http.*; public class MiServlet extends HttpServlet { private String user; public void init() {user = hola ;} public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { } } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { }

Servlet, ejemplo public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { dopost(request,response); } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { } response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>password Checker"); out.println("</title>"); out.println("</head>"); out.println("<body bgcolor=\"#6699cc\">"); out.println("<p> Hola Mundo </p>"); out.println("<body\">"); out.close();

Servlets, el problema del estado Problema: HTTP es un protocolo sin estado pero muchas aplicaciones web necesitan mantener el estado (chat, tienda virtual, ). Posibles soluciones: Formularios ocultos Cookies: son ficheros de texto que los almacena el cliente (navegador) Sesiones: hacen uso de cookies pero lo hacen de manera transparente.

Servlets, el problema del estado Session Tracking API <<interface>> ServletRequest <<interface>> HttpServletRequest getsession(c:boolean):httpsession getsession():httpsession <<interface>> HttpSession setattribute(name:string,value:object) getattribute(name:string):object getattributenames(name:string):ennumeration removeattribute(name:string) setmaxinactiveinterval(sec:int); invalidate()

Servlets, el problema del estado Session Atributo Valor Sesion1 name David Sesion2 email name benavides@us.es José Luis Sesion3 email name email actas arjona@tdg.lsi.us.es Antonio aruiz@tdg.lsi.us.es ok

Servlets, el problema del estado Sesion1 name David Sesion2 name José Luis email benavides@us.es email arjona@tdg.lsi.us.es Sesion3 name email actas Antonio aruiz@tdg.lsi.us.es ok

Servlets, ejemplo public class ContadorEstado extends HttpServlet { public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); HttpSession session = request.getsession(); Integer cont = (Integer)session.getAttribute( contador ); int aux = 1; if(cont!= null){ aux = cont.intvalue() + 1; s.setattribute( contador,new Integer(aux)); } else{ s.setattribute( contador,new Integer(aux)); } } } out.println( Ha accedido + aux + veces en esta sesión );

Servlets, ejemplo

Servlets, parámetros de entrada web.xml <web-app> <!-- ========================= Aplicación ===================== --> <display-name>tomcat Primeros Pasos</display-name> <description> Primeros pasos con Tomcat.</description> <!-- ========================= Definición de Servlets ============= --> <servlet> <servlet-name>holamundo</servlet-name> <servlet-class>es.us.isg3.servlets.holamundo</servlet-class> </servlet> <!-- ========================= Mapeo de Servlets Definidas ========= --> <servlet-mapping> <servlet-name>holamundo</servlet-name> <url-pattern>/hola.html</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>default.html</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>

Servlets, parámetros de entrada <web-app> <!--======= Parámetros de entrada de la app web ========== --> <context-param> <param-name>jdbc-url</param-name> <param-value>jdbc:mysql://127.0.0.1:3306/isg3</param-value> </context-param> <servlet> <servlet-name>holamundo</servlet-name> <servlet-class>es.us.isg3.servlets.holamundo</servlet-class> <!--======= Parámetros de entrada del Servlet ========== --> <init-param> <param-name>user</param-name> <param-value>practica</param-value> </init-param> <init-param> <param-name>passwd</param-name> <param-value>practica</param-value> </init-param> </servlet> </web-app>

Servlets, parámetros de entrada <<interface>> Servlet init() destroy() <<abstract>> GenericServlet <<abstract>> HttpServlet doget() dopost() <<interface>> ServletConfig MiServlet getinitparameter(name: String): String getinitparameternames():enumeration getservletcontext():servletcontext

Servlets, información del servidor <<interface>> ServletContext getinitparameter(string name): String getinitparameternames(): Enumeration getserverinfo(): String <<interface>> ServletRequest getservername():string getserverport(): int

Servlets, información del cliente <<interface>> ServletRequest getremoteaddr():string getremotehost():string <<interface>> HttpServletRequest getheader(name:string):string getheadernames():enumeration getheaders(name:string)

Índice Modelo conceptual Mapeo del modelo conceptual a código Aplicación web y sus problemas Servlets Front Controller

Front Controller Problema: existen varios recursos con partes en común en una aplicación web. R1 R2 R3 Solución: Poner un controlador frontal que haga la parte en común y despache las peticiones R1 FC R2 R3

Front Controller, ejemplo Identificarse Consultar Productos Seguir Compra Añadir Añadir Productos Visualizar Carrito Cliente Eliminar Productos Eliminar Confirmar Compra Acabar Compra

Front Controller, ejemplo Identificarse Consultar Productos Seguir Compra Añadir FC Añadir Productos Visualizar Carrito Cliente Eliminar Productos Eliminar Confirmar Compra Acabar Compra

Front Controller, ejemplo El problema del logado

!Gracias! Podemos mejorar esta lección? Mándanos un email a benavides@us.es Visite la web de la asignatura www.lsi.us.es