Modelo HTTP Request/Response

Slides:



Advertisements
Presentaciones similares
Java Enterprise Edition (Java EE)
Advertisements

Introducción a COBHTTPD
JEE Introducción a Java Enterprise Edition (JEE) y el modelo Enterprise Java Beans (EJB)
Curso de PHP Tema 5: Sesiones.
Curso de Java “Java para Web” Rogelio Ferreira Escutia.
Nau Gran dHivern Intr. a la creación y gestión de páginas web Introducción a la web.
Internet y tecnologías web
Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004.
Fernando Alonso Blázquez Formularios en lenguaje HTML 26 de Febrero de 2004.
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
Servlets 22 de Abril de 2004 Fernando Alonso Blázquez.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
Programación Orientada a Objeto 1
CI-2413 CGI & Compañía.
Seguridad en aplicaciones Web con Microsoft ASP.NET
Modelando aplicaciones
CGI I La mayor parte de los elementos HTML de que disponemos permite al visitante visualizar los contenidos de un sitio, pero no interactuar con él. Dicho.
"java del lado del servidor" Servlet y JSP Java Server Pages.
OBJETO REQUEST. El objeto Request Por qué el objeto request Funcionamiento Colecciones: – Transferencia de variables por URL –Transferencia de variables.
Introducción a la arquitectura Web
Servlets.
Servlets Servlets.
Introduccion a las páginas WEB HTML
Java 2 Platform Enterprise Edition
El mecanismo básico de interacción entre el usuario y un sitio web esta dado por el uso de formularios html. El server envía un formulario que el browser.
Introducción XML y WebServices.
Mecanismo de petición y respuesta Prof. Manuel Blázquez Ochando
Formularios en lenguaje HTML 7 de Abril de Índice Generalidades Definición en HTML Elementos Formas de envío: métodos GET y POST Recepción y tratamiento.
Sesión en Servlets 31 de Marzo de Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura.
M.I. María Luisa González Ramírez Servlets y JSP.
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Borland User Group - Guatemala Desarrollo de Servlets con Borland JBuilder 2006 Mario Enríquez Open Consult Diciembre 2006.
JAVA. Introducción Que es java?  Código reusable  Multiplataforma.
Desarrollo de sitios web con PHP y MySQL Tema 5: Sesiones José Mariano González Romano
Tecnologías para el desarrollo de aplicaciones Web
HTTP, CGI, Applets, Servlets y SOAP
Servlets, JSP, JavaBEANS,JDBC
Sistemas Distribuidos basados en la web
3 PROGRAMAR EN UN LENGUAJE DE HIPERTEXTO L.I. OSWALDO MARTINEZ C. EDPW.
INTRODUCCIÓN A LA PROGRAMACIÓN WEB
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Servlets 18 de Marzo de Índice ¿Qué es un Servlet? ¿Cuándo y por qué usar Servlets? Estructura básica de un HttpServlet Servlet simple que genera.
JAVA: Servlets Diseño de aplicaciones web
TEMA 6. Applets y servlets
PROTOCOLO H T T P.
INTRODUCCIÓN A AJAX. ¿Qué es AJAX? Acrónimo de Asynchronous JavaScript And XML No es ninguna tecnología, ni lenguaje de programación. Es una técnica de.
“SERVLETS”. Paola Rojas Contreras Juan Villarroel Leiva José Miguel Perez V. Departamento de Electrónica.
Fernando Alonso Blázquez Nicolás Serrano Bárcena Servlets 8 de Abril de 2008.
Unidad didáctica 6 Diseño de páginas Web.
Fernando Alonso Nicolás Serrano Servlets con acceso a Bases de Datos 21 de Abril de 2008.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
PROTOCOLO HTTP ALGUNAS DEF.-
Desarrollo con Servlets. Servlets: Introducción  Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java.
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Mario Osvaldo Bressano Servlets. Mario Osvaldo Bressano Arquitectura de 2 Capas.
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets 10 de Mayo de 2006.
IS2Objetos Distribuidos - J2EE,RMI1 Ingeniería del software II Ingeniería Web.
Los siguientes términos y acrónimos son un resumen de las tecnologías web actuales: ASP (Active Server Pages)  Páginas de servidor activas.  Tecnología.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Clase 5 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
 Buscador es una página web en la que se ofrece consultar una base de datos en la cual se relacionan direcciones de páginas web con su contenidopágina.
 Claudia Jordan Idrovo.  Son los puntos de enganche para cada conexión de red que realizamos. El protocolo TCP (el utilizado en internet) identifica.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
Integrante: Mariana Alcalá Hdz María del Carmen Andrade G. Alondra E. García Mtz Joselyn Gpe García V. Antonio de Jesús Hdz R. Cristian Jesús Ruvalcaba.
Modelo Cliente - Servidor. La Web funciona siguiendo el denominado modelo cliente-servidor, habitual en las aplicaciones que funcionan en una red. Existe.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
 Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java a los CGIs (Common Gateway Interface) para construir.
1/11Departamento de Informática Tributaria AJAX Fundamentos básicos ( ) AJAX Fundamentos básicos ( )
Temario Java 2 Enterprise Edition Arquitectura Especificación Servlets Contenedores Cookies Sesiones.
Transcripción de la presentación:

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

Ejemplo Request/Response Servidor Web 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 http://www.google.com.ar/ GET / HTTP/1.1 Host: www.google.com.ar User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) 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-8859-1,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 2009 16: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: 3504 2010 Lenguajes Visuales

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

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 2010 Lenguajes Visuales

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. 2010 Lenguajes 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 2010 Lenguajes 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) 2010 Lenguajes Visuales

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

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

Modelo original de la WWW 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” 2010 Lenguajes Visuales

Modelo de Formularios Protocolo CGI Dificultades 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) 2010 Lenguajes Visuales

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

Evoluciones de HTTP / CGI Algunas soluciones propuestas: Frameworks / APIs Netscape’s NSAPI, Microsoft’s ISAPI, Apple’s WebObjects, JavaSoft’s Servlets Evitar la ejecución de un nuevo proceso ante cada pedido Extensiones residentes en memoria DLL’s, plug-ins en el servidor, Java Servlets, ORBs Scripting en el servidor Microsoft’s ASP, JavaSoft’s 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 2010 Lenguajes Visuales

Servlet Container (Servlet Engine) 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 2010 Lenguajes Visuales

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

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

Servlets: Ejemplo Servicio Implementado Acceso BD Acceso Parámetros 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("<HTML> ......."); out.println("<P>Bienvenido a su cuenta de UARGBooks .... "); out.println(“ ........</HTML>"); } else { out.println("<P>Lo siento, intentelo nuevamente .... "); out.println(“ ........</HTML>"); } out.close(); } } Servicio Implementado Acceso BD Acceso Parámetros Generación HTML 2010 Lenguajes 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. 2010 Lenguajes 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"); 2010 Lenguajes Visuales

Cookies Creando una cookie: Agregar la Cookie al HTTP Response: 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/1.1 200 OK Content-type: text/html Set-Cookie : color=RED Get index.html HTTP/1.1 Host: www.colpix.com.ar Cookie: color=RED Accept: */* 2010 Lenguajes 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 2010 Lenguajes 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) 2010 Lenguajes 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(); 2010 Lenguajes Visuales

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

HTTP Session HTTP Request (se envía información al servidor sobre la identificación de la session en forma de cookie) POST /registrar.do HTTP/1.1 Host: www.colpix.com.ar 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 2010 Lenguajes 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) <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns = http://java.sun.com/xml/ns/j2ee … <session-config> <session-timeout>30</session-timeout> </session-config> </web-app> 2010 Lenguajes Visuales

HTTP Session. Ejemplo Acceso HttpSession Acceso y colocación 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 { .... } out.println("<P>Ya existe un usuario logeado .... "); } out.close(); Acceso HttpSession Acceso y colocación de valores 2010 Lenguajes Visuales

Mantenimiento de 1 estado compartido por varios usuarios 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); 2010 Lenguajes Visuales

Servlets vs. JSP Servlets: JSP “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 2010 Lenguajes 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(“<html> <body>” + “<h1>Hola” + nombre + “</h1></body></html>”); Servlet <html> <body> <h1>Hola <%= nombre %></h1> </body> </html> JSP 2010 Lenguajes Visuales

Características del lenguaje 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. 2010 Lenguajes Visuales

Finalmente un JSP es un Servlet 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() 2010 Lenguajes Visuales

Tipos de elementos JSP Scriptlet: <% %> Directive: <%@ %> Código Java embebido en el JSP Directive: <%@ %> Page: <%@ page import=”foo.*” session=”false” %> Taglib: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> Include: <%@ include file=”header.html” %> Expression: <%= %> Expresiones. Declaration: <%! %> Forma de declarar un atributo a nivel de Servlet EL expression: ${ } Expression Language Action: <jsp:include page=”footer.html” /> 2010 Lenguajes Visuales

Arquitectura JSP Página (archivo .JSP) Servlet <%@page import=“java.text.*, java.util.*” *> <html> <body> <% Date d = new Date (); String today = DateFormat.getDateInstance().format(d); %> Today is: <em> <%=today%> </em> </body> </html> Servlet Compilación de la Página Expression Scriptlet Directive 2010 Lenguajes Visuales

Modelo 1 JSP CLIENTE SERVIDOR Container JDBC Browser Beans JSP 2010 Lenguajes Visuales

Modelo 2 JSP CLIENTE SERVIDOR Container Servlet Browser Beans JSP 2010 Lenguajes 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. <%= ((foo.Persona) request.getAttribute(“persona”)).getMascota().getNombre() %> 2010 Lenguajes Visuales

JSP Standard Tag Library (JSTL) <%@ taglib prefi x=”c” uri=”http://java.sun.com/jsp/jstl/core” %> <html> <body> <c:if test=“${empty param.userName}” > <jsp:forward page=”registrarse.jsp” /> </c:if> <h1>Bienvenido! ${param.userName}</h1> </body> </html> <table> <c:forEach var=”pelicula” items=”${peliculas}” > <tr><td>${pelicula}</td></tr> </c:forEach> </table> 2010 Lenguajes Visuales

Referencias “Fundamentals of Java servlets” http://java.sun.com/developer/onlineTraining/Servlets/Fundamentals/ “Java Server Pages Fundamentals” http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html “Understanding JavaServer Pages Model 2 architecture” http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html “Servlets and JSP Pages Best Practices” http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/ 2010 Lenguajes Visuales