Descargar
Transcripción
Descargar
1 NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 2 Agenda • Protocolo HTTP • Formas HTML • Servlets ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 3 Protocolo HTTP • Hypertext Transfer Protocol (HTTP) - 1990 • Versión 1.1 • Mecanismo para localizar recursos en Internet • Usualmente los URL corresponden a páginas HTML, pero el mecanismo es general • Es un lenguaje que interpretan los servidores HTTP ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 4 Protocolo HTTP • Protocolo muy simple, sin manejo de estado • Dirección Servidor • Puerto • Recurso Buscado puerto: 80 http( dir. recurso) recursos browser Servidor HTTP recurso http (recurso) socket ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 5 Protocolo HTTP • Lenguaje de consulta: • Línea de requerimiento • • • • GET: Se encapsula la petición en un URL • POST: Tamaño de datos ilimitado • Descripción del recurso Protocolo: HTTP/1.1 Campos de encabezado • • Método: GET / POST / … variable: valor (content_type: text/html) Contenido ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 6 Protocolo HTTP • Lenguaje de respuesta: • Línea de encabezado Protocolo: HTTP/1.1 • Estado de la respuesta (200) • Explicación del estado (“OK”) • • Campos de encabezado • • variable: valor (content_type: text/html) Contenido: la respuesta (<html>…</html>) ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 7 Protocolo HTTP • Protocolo: Servidor host Tipo información Tamaño Cliente [GET / POST] recurso HTTP/1.1 { encabezado } Información HTTP/1.1 200 OK {encabezado } Respuesta ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co socket 203 no response 400 bad request 403 forbidden 404 not found 500 internal error 8 Protocolo HTTP • Ejemplo: HTTP/1.0 200 OK Date: Wed, 18 Sep 1996 20:18:59 GMT Server: Apache/1.0.0 Content-type: text/html Content-length: 1579 Last-modified: Mon, 22 Jul 1996 22:23:34 GMT HTML document ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 9 Agenda • Protocolo HTTP • Formas HTML • Servlets ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 10 Formas HTML • Ejemplo: ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 11 Formas HTML • Ejemplo: <form method="Post" action="HTTP://host/servlet/servlet1"> NOMBRE: <input type="text" name="name" size="40"> PASSWORD: <input type="password" name="password" size="10" value="secreto"> CURSO: <select name="materia"> <option selected>CURSO1</option> <option>CURSO2</option> <option>CURSO3</option> </select><br> <input type="submit" value="SEND"> </form> ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 12 Formas HTML • Formularios: puerto: 80 Entradas • Dirección Servidor • Puerto • Recurso Ejecutable • Entradas Usuario http( URL+entradas) CGI CGI xxx Servidor HTTP browser Nombre: SEND Respuesta • Script • ASP • Servlet / JSP •… ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co http (respuesta) socket Páginas HTML on-the-fly respuesta 13 Aplicaciones WEB Página Dinámica calculadorWeb.war JBoss URL + entradas Página Estática localhost:8080/calculadoraWeb/index.htm ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 14 Aplicaciones WEB componente3.jar calculadoraWeb.war Servlet1 clases que producen Servlet1 Servlet1 Servlet1 páginas dinámicas componente2.jar componente1.jar Relación entre nombres y clases páginas estáticas JBoss http://URL + entradas ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 15 Agenda • Protocolo HTTP • Formas HTML • Servlets ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 16 Servlets • J2EE define una plataforma y una arquitectura para construir aplicaciones basadas en tecnología WEB • Servlets y JSP representan el manejo de la interacción con el cliente • Manejan un pedido HTTP, generando contenido dinámicamente. Son clases JAVA • javax.servlets.jar incluye clases para el manejo de los conceptos más usados en las aplicaciones WEB ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 17 Servlets • Modelo de Servlets: • Método (GET/POST) • Valores de la forma • URL ejecutable request browser servlet servlet servlet JBoss Servidor HTTP Tomcat HTTP forma HTML HTTP response • HTML ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 18 Servlets • Es una especificación: el modelo es compartido por todos los servidores J2EE, pero los detalles de deploy de los servlets varían • Cómo funcionan? • El servidor asocia un nombre y una configuración con una clase Java ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 19 Servlets • Pasos de manejo de un llamado: • JBoss recibe el pedido HTTP • Traduce los elementos de la consulta y el contexto de ejecución en objetos y clases de servicio • Delega el llamado sobre la clase que implementa el servlet, el cual genera el contenido. • JBoss envía el contenido por un socket al browser ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 20 Servlets • URL de un Servlet: <form method=“post“ action=“http://localhost:8080/prefijo/nombre"> • • • En lugar de un script, se le da el “prefijo” y el nombre asociado con el servlet El servidor se encarga de encontrar la clase asociada, y darle control a una instancia El esquema de instanciación es configurable ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 21 Servlets • Ejemplo de archivo de configuración: <web-app> Relación entre <servlet> nombres <servlet-name> y clases simple </servlet-name> <servlet-class> uniandes.cupi2.SimpleServlet </servlet-class> </servlet> </web-app> web.xlm ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 22 URL de un Servlet • También puede especificar un URL personalizado para el servlet. • Por ejemplo: • http://localhost:8080/aplicacion/simple.htm • Apunta al servlet simple ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 23 Servlets • Ejemplo de archivo de configuración: <web-app> <servlet> Relación entre nombres y clases <servlet-name>simple</servlet-name> <servlet-class>uniandes.cupi2.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simple</servlet-name> <url-pattern>/simple.htm</url-pattern> </servlet-mapping> </web-app> web.xlm ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 24 Servlets • Ciclo de vida de un servlet ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 25 Aplicaciones WEB componente3.jar calculadoraWeb.war Servlet1 clases que producen Servlet1 Servlet1 Servlet1 páginas dinámicas componente2.jar componente1.jar Relación entre nombres y clases páginas estáticas JBoss http://URL + entradas ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 26 Elementos de base del modelo • HttpServletRequest • HttpServletResponse • HttpServlet • doGet(HttpServletRequest, HttpServletResponse) • doPost(HttpServletRequest, HttpServletResponse) request • init • service Servidor servlet • destroy servlet HTTP servlet Tomcat response ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 27 Estructura public class ServletCalculadora extends HttpServlet { public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { ... } ... ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 28 Estructura ... public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { ... } } • doPost atiende el método POST y doGET el método GET • Para manejarlos de igual manera a los dos se delega a un tercer método. ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 29 Delegando a un tercer método ... ... ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 30 ¿Cómo leer las entradas del usuario? • Nombres definidos en el formulario HTML HttpServletRequest: request.getParameter("name") request.getRemoteAddr() request.getContentLength() ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 31 ¿Cómo generar la respuesta? HttpServletResponse: PrintWriter out = response.getWriter(); response.setContentType("text/html"); out.println( “<HTML> ...” ); ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 32 ¿Cómo generar la respuesta? ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 33 Ejemplo import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println( "<HTML>\n" + "<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n" + "<BODY>\n" + "<H1>Hello WWW</H1>\n" + "</BODY></HTML>"); } } ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 34 Inicialización del servlet ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co 35 Implementación de las clases del modelo del mundo ISIS1206 – Estructuras de Datos http://cupi2.uniandes.edu.co