La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

2010Lenguajes Visuales Modelo HTTP Request/Response Web Browser Servidor Web HTTP Request Response Cliente Servidor.

Presentaciones similares


Presentación del tema: "2010Lenguajes Visuales Modelo HTTP Request/Response Web Browser Servidor Web HTTP Request Response Cliente Servidor."— Transcripción de la presentación:

1 2010Lenguajes Visuales Modelo HTTP Request/Response Web Browser Servidor Web HTTP Request Response Cliente Servidor

2 2010Lenguajes Visuales Ejemplo Request/Response GET / HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv: ) Gecko/ Firefox/3.5.2 (.NET CLR ) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us Accept-Encoding: gzip,deflate Accept-Charset: ISO ,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: PREF=ID=87ba9fd621efffdf:HTTP/1.x 200 OK Date: Thu, 13 Aug :22:34 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip Server: gws Content-Length: El usuario escribe una dirección en el navegador o hace clic en un link 2. El navegador genera el Request y lo envía al Server. Este es un ejemplo del Request Servidor Web Servidor

3 2010Lenguajes Visuales Ejemplo Request/Response Servidor Web Servidor Web Browser Response HTTP/ OK Date: Fri, 31 Dec :59:59 GMT Content-Type: text/html Content-Length: 1354 Googl El servidor recibe y procesa el Request. Busca el recurso solicitado. El servidor genera el Response Correspondiente y lo envía al cliente. 4. El cliente recibe el Response y lo procesa. El browser obtiene el HTML, lo interpreta y muestra en la pantalla.

4 2010Lenguajes Visuales HTTP/HTML HTTP (HyperText Transfer Protocol): protocolo ampliamente utilizado para comunicación cliente servidor. Permite la comunicación del tipo Request Response simple. El cliente envía un HTTP Request y el servidor contesta con un HTTP Response. HTML (HyperText Markup Language): brinda información necesario para que el navegador sepa como mostrar el contenido al usuario.

5 2010Lenguajes Visuales HTTP Request Elementos principales que componen un HTTP Request: –Método HTTP (HTTP Method): usualmente: GET, POST. –Recurso al que se accede (URL) –Parámetros del FORM

6 2010Lenguajes Visuales HTTP Response Elementos principales que componen un HTTP Response: –Código de estado (status code): Indica si la operación fue realizada correctamente o no. –Tipo de contenido (Content Type): Si el contenido es HTML, una imagen, un archivo PDF, etc. –Contenido: el HTML, la imagen, etc.

7 2010Lenguajes Visuales HTTP Method El HTTP Method informa al servidor el tipo de Request que se está recibiendo y como está formado el resto del mensaje. El protocolo HTTP posee varios métodos (HTTP Methods), los más utilizados son: –GET: Enviado a través del clic en un link o ingresando una dirección en el browser. –POST: Enviado a través del clic de un botón SUBMIT de un formulario. El Request contendrá los parámetros completados en el formulario

8 2010Lenguajes Visuales Tecnologías involucradas en el cliente (Presentación) Se utiliza HTML para el desarrollo de páginas WEB. El HTML describe el contenido/estructura del documento. CSS (Cascade Style Sheet): Brinda el estilo y layout a la página. Javascript: Brinda la posibilidad de programación del lado del cliente. Brinda acción e interacción con el usuario de la página. (Ver filminas de JS)

9 2010Lenguajes Visuales Thin-Client Thick-Client Object Web Estructura de Aplicaciones Web Composición Web Browser Servidor Web Servidor de la Aplicación Aplic. Legacy Almac. Datos Aplicación HTTP ClienteServidor

10 2010Lenguajes Visuales Evolución Tecnologías Web Interactividad Funcio- nalidad Servidor basado en URLs Formularios CGI ISAPI NSAPI HTML Dinámico Scripts Cookies /Sessions ASPs Web Objects Servlets Applets / Java Beans Controles ActiveX Servidores de aplicación CORBA / DCOM / RMI XML, DOM, XSL

11 2010Lenguajes Visuales Modelo Hipertextual Modelo original de la WWW –Publicación y distribución de documentos electrónicos Servidor de documentos, basado en URLs –Aplicación 2-tier

12 2010Lenguajes Visuales Modelo de Formularios Protocolo CGI Redirección de formularios HTML a aplicaciones en el servidor Dificultades Lento –Cada ejecución produce la ejecución de un nuevo proceso Complejo Protocolo stateless (HTTP) No adecuado para aplicaciones grandes No adecuado para clientes Java (orientados a objetos)

13 2010Lenguajes Visuales CGI Submit GET / POST Colocar valores Ejecutar Programa CGI Variables de EntornoServidor Web Browser CLIENTE SERVIDOR Leer valores Input Output Retornar Docto. HTML

14 2010Lenguajes Visuales Evoluciones de HTTP / CGI Algunas soluciones propuestas: –Frameworks / APIs Netscapes NSAPI, Microsofts ISAPI, Apples WebObjects, JavaSofts Servlets –Evitar la ejecución de un nuevo proceso ante cada pedido Extensiones residentes en memoria –DLLs, plug-ins en el servidor, Java Servlets, ORBs –Scripting en el servidor Microsofts ASP, JavaSofts Java Server Pages (JSP) –Estas alternativas siguen requiriendo HTTP y el servidor Web El servidor Web media entre los objetos en el cliente y los objetos del servidor

15 2010Lenguajes Visuales Servlets Java Servlet API Mecanismo comunicación aplicación-clientes web. Independencia de la plataforma Modelo general: –Clase proveyendo un servicio (service) dado –Servidores pequeños y especializados Servlet Container (Servlet Engine) Administra detalles de : –Conexión a la red –Parsing de los pedidos del cliente web –Respuestas correctamente formateadas –Ciclo de vida del servlet

16 2010Lenguajes Visuales JDBC apjv1.1 JVM Servlet Container Zones Servlets Browser Servidor Web Servlets Mod Jserv SERVIDORCLIENTE HTTP Apache

17 2010Lenguajes Visuales Servlets Servlet Container Servlet Creación container Pedido HTTP1 Pedido HTTP2 Respuesta HTTP1 Respuesta HTTP2 Creación Servlet init() service() destroy() Destrucción Servlet Inicialización Procesamiento Pedido1 Procesamiento Pedido2 Liberación Recursos

18 2010Lenguajes Visuales public class LoginServlet extends HttpServlet { Connection conn; public void init(ServletConfig config) throws ServletException { conn = connectToDB(uargbooks); } public void doGet(HttpServletRequest req,HttpServletResponse resp) { resp.SetContentType(text/html); PrintWriter out = resp.getWriter(); String query = SELECT * FROM users WHERE (login=\+ req.getParameter(login)+\ AND passwd=\+ req.getParameter(contrasenia)+\); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(query); if (rs.next()) { // consulta exitosa out.println(" "); out.println(" Bienvenido a su cuenta de UARGBooks.... "); out.println( "); } else { out.println(" "); out.println(" Lo siento, intentelo nuevamente.... "); out.println( "); } out.close(); } } Generación HTML Servlets: Ejemplo Servicio Implementado Acceso BD Acceso Parámetros

19 2010Lenguajes Visuales Cookies Una cookie es información enviada por el servidor web al navegador. Las Cookies representan dicha información en pares clave-valor Las Cookies son guardadas en los navegadores Los navegadores almacenan las cookies relativas a un sitio o host. Una vez guardadas en los navegadores, las cookies son enviadas en cada request al servidor web.

20 2010Lenguajes Visuales Cookies - ¿Para que se utilizan? Tacking Autenticacion Personalización Administración de Sesión (Session Management) Administración de Estado (State Management) Cookie userCookie = new Cookie("user", "uid1234");

21 2010Lenguajes Visuales Cookies Creando una cookie: –Cookie color = new Cookie(color", RED"); Agregar la Cookie al HTTP Response: –response.addCookie(color); Leer cookies enviades desde el cliente: – Cookie[] cookies = request.getCookies(); HTP/ OK Content-type: text/html Set-Cookie : color=RED Get index.html HTTP/1.1 Host: Cookie: color=RED Accept: */*

22 2010Lenguajes Visuales HTTP Session - ¿Qué es? Session es el mecanismo para mantener informacion sobre el estado de una aplicación entre Requests de un cliente. La Session mantiene la identidad de un cliente entre Requests Del lado del Servidor, la Session es identificada por un único session id. Es el mecanismo por el cual se pueden asociar una serie de HTTP Request Mantiene estado del cliente

23 2010Lenguajes Visuales HTTP Session ¿Por qué es necesario? –HTTP es un protocolo stateless (no se guarda información de estado entre Requests) –Muchas aplicaciones Web requieren mantener el estado entre Request: Ejemplo: carrito de compras ¿Cómo se mantiene las HTTP Session? –Utilizando Cookies (Muy utilizado) –URL Rewriting –Otros (Sessiones basadas en SSL,etc)

24 2010Lenguajes Visuales HTTP Session API La especificación de Servlet provee la interface HTTPSession para mantener la información relativa a la Session. El Contenedor hace disponible a este objeto en tiempo de ejecución. Para acceder al HTTP Session: –HTTPSession session = request.getSession(boolean); Para la administración de estado de la aplicación: –session.setAttribute(String key, Object value); –session.getAttribute(String key); –session.removeAttribute(String key); Para destruir la HTTP Session: –session.invalidate();

25 2010Lenguajes Visuales HTTP Session HTTP Response (una vez creada la session, se envía información al cliente con el id de session) HTTP/ OK Set-Cookie: JSESSIONID=0AAB6C8DE415 Content-Type: text/html Content-Length: 397 Date: 08 Oct :25:40 GMT Server: Apache-Coyote/1.1 Connection: close...

26 2010Lenguajes Visuales HTTP Session POST /registrar.do HTTP/1.1 Host: User-Agent: Mozilla/5.0 Cookie: JSESSIONID=0AAB6C8DE415 Accept: text/xml,application/xml,application/xhtml+xml,text/ html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/ jpeg,image/gif;q=0.2,*/*;q=0.1 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate HTTP Request (se envía información al servidor sobre la identificación de la session en forma de cookie)

27 2010Lenguajes Visuales HTTP Session - Configuración Es posible configurar el timeout de la session para una aplicación web en el descriptor de deploy (web.xml)

28 2010Lenguajes Visuales HTTP Session. Ejemplo public class LoginServlet extends HttpServlet {.... public void doGet(HttpServletRequest req,HttpServletResponse resp) { // Obtener objeto sesión HttpSession sesion = req.getSession(true); Boolean logeado = (Boolean) sesion.getValue(logged); if (!logeado || (logeado == null)){.... // Codigo busqueda usuario en BD if (sucess) {..... sesion.putValue(logged, true); sesion.putValue(user_logged,req.getParameter(login)); } else {.... } } else {..... out.println(" Ya existe un usuario logeado.... "); } out.close(); } Acceso HttpSession Acceso y colocación de valores

29 2010Lenguajes Visuales Servlets: Contextos Mantenimiento de 1 estado compartido por varios usuarios –ServletContext Administra recursos compartidos por un grupo de servlets Aplicación típica: Chat.... RoomList roomlist = createRooms(); getServletContext().setAttribute(roomList, roomlist);....

30 2010Lenguajes Visuales Servlets vs. JSP Servlets: –Código –Adecuados para programadores –Foco en la funcionalidad / control de la aplicación JSP –Página HTML/XML + scripts –Adecuados para diseñadores de páginas –Foco en el diseño de las presentaciones

31 2010Lenguajes Visuales Servlets vs. JSP De esta manera se crea una página web dinámica en un Servlet. Hay que utilizar un output stream: Un JSP parece un HTML al que se le puede ingresar código y recursos Java. Un JSP finalmente, se traduce en una clase Servlet out.println( + Hola + nombre + ); Servlet Hola JSP

32 2010Lenguajes Visuales JSP: Java Server Pages Ventajas: Separación de contenido estático y dinámico Portabilidad (Write Once Run Anywhere) Transparencia del concepto de Servlet Características del lenguaje Scriptlets / Directivas / Declaraciones / Expresiones (Expresion Lenguage) Tags (JSTL) Facilidades de sincronización, manejo excepciones, administración de sesiones.

33 2010Lenguajes Visuales JSP: Java Server Pages Finalmente un JSP es un Servlet –El contenedor traduce el JSP en archivo que contiene una clase fuente Servlet (.java), luego compila esta clase y se obtiene el archivo compilado.class de dicho Servlet –Dicho Servlet se comporta de la misma manera que un Servlet codificado a mano: El contenedor lo carga, lo instancia, lo inicializa, genera un thread para cada request e invoca el método service()

34 2010Lenguajes Visuales Tipos de elementos JSP Scriptlet: –Código Java embebido en el JSP Directive: –Page: –Taglib: –Include : Expression: –Expresiones. Declaration: –Forma de declarar un atributo a nivel de Servlet EL expression: ${ } –Expression Language Action:

35 2010Lenguajes Visuales Arquitectura JSP <% Date d = new Date (); String today = DateFormat.getDateInstance().format(d); %> Today is: Servlet Página (archivo.JSP) Compilación de la Página Scriptlet Expression Directive

36 2010Lenguajes Visuales Modelo 1 JSP JDBC Container Browser Beans SERVIDORCLIENTE JSP

37 2010Lenguajes Visuales Modelo 2 JSP Container Browser Beans SERVIDORCLIENTE JSP Servlet

38 2010Lenguajes Visuales Scriptless JSP Es difícil (costoso) el mantenimiento de aplicaciones Web utilizando JSP con código embebido Los diseñadores Web no se sienten a gusto con el código Java embebido en el JSP Es posible utilizar EL, Estándar Actions, taglibs, etc. para no tener que utilizar código embebido Ejemplo: las siguientes expresiones obtienen el mismo resultado: 1. ${persona.mascota.nombre} 2.

39 2010Lenguajes Visuales JSP Standard Tag Library (JSTL) Bienvenido! ${param.userName} ${pelicula}

40 2010Lenguajes Visuales Referencias Fundamentals of Java servlets ndamentals/http://java.sun.com/developer/onlineTraining/Servlets/Fu ndamentals/ Java Server Pages Fundamentals ontents.htmlhttp://java.sun.com/developer/onlineTraining/JSPIntro/c ontents.html Understanding JavaServer Pages Model 2 architecture ssj-jspmvc.htmlhttp://www.javaworld.com/javaworld/jw /jw-12- ssj-jspmvc.html Servlets and JSP Pages Best Practices erpages/servlets_jsp/http://java.sun.com/developer/technicalArticles/javaserv erpages/servlets_jsp/


Descargar ppt "2010Lenguajes Visuales Modelo HTTP Request/Response Web Browser Servidor Web HTTP Request Response Cliente Servidor."

Presentaciones similares


Anuncios Google