Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
El Protocolo de Transferencia de Hipertexto HTTP HTTP es un protocolo de nivel de aplicación para sistemas de información distribuidos, colaborativos y de hipermedios. Es un protocolo genérico, sin estado, que puede utilizarse para muchas otras tareas distintas de la de transferencia de hipertexto, por medio de la extensión de sus métodos, códigos de error y encabezados. La versión 1.1 de HTTP se define en un documento denominado RFC 2616, disponible en
El Protocolo de Transferencia de Hipertexto HTTP HTTP permite el intercambio de datos en el Web, entre navegadores y servidores Cuando se utiliza HTTP, el servidor siempre responderá a una solicitud enviada por un cliente (navegador)
Los métodos de HTTP HTTP/1.1 proporciona los siguientes 7 métodos GET POST PUT DELETE TRACE OPTIONS HEAD
Solicitudes HTTP GET /appweb/index.jsp HTTP/1.1 Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhost Referer: User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Content-Length: 44 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Nombre=Jorge+Ibarra& =jorgeeie%40uabc.mx
Respuestas HTTP HTTP/ OK Server: Microsoft-IIS/4.0 Date: Mon, 3 May :13:33 GMT Content-Type: text/html Last-Modified: Mon, 11 Jan :23:42 GMT Content-Length: 112 HTTP Response Example Welcome to Brainy Software
Arquitectura de sistemas de software Una aplicación de software bien diseñada, se particiona en partes lógicas denominadas capas Cada una de estas capas tiene una responsabilidad diferente en la arquitectura global de la aplicación Dichas capas son abstracciones puras, y no necesariamente corresponden a una distribución física
Arquitectura de sistemas de software Algunas capas típicas son: Presentación: Se encarga de la interfaz de usuario y de la interacción con el usuario Lógica de negocio: Contiene los componentes encargados de la lógica de la aplicación Datos: Normalmente consiste de una o más bases de datos donde se almacena la información
Distintas arquitecturas Dos capas Tres capas Aplicación Web Aplicación J2EE
Contenedores Web Servidores Web: Son programas que utilizan el protocolo HTTP, en forma de una aplicación cliente-servidor, para proporcionar las páginas, scripts, programas y archivos multimedia que forman una página Web Dos de los servidores Web más populares son Apache y Microsoft Internet Information Services
Contenedores Web Tomcat – Es un contenedor de Servlets. Contiene las implementaciones de referencia para las tecnologías de Servlets y JSP JBoss – Contiene la implementación de los Enterprise Java Beans (EJB). Es un contenedor de aplicaciones J2EE
Temas Servlets JSP JBoss
Servlets Los Servlets son aplicaciones escritas en Java que funcionan como una capa intermedia entre una solicitud HTTP y una base de datos o algún otro tipo de aplicación que se ejecuta en un servidor Los Servlets se ejecutan dentro de un contenedor de Servlets
Funcionamiento de los Servlets Leer los datos enviados por el usuario Obtener cualquier otra información que esté incluída en la solicitud HTTP Generar los resultados Codificar los resultados Establecer los parámetros de la respuesta Enviar el documento de regreso al cliente
¿Cuándo utilizar Servlets? En ocasiones, una respuesta estática de parte de un servidor, no será suficiente para cumplir con el propósito de la aplicación En estos casos, se debe construir una respuesta diferente para cada solicitud que se realice
¿Cuándo utilizar Servlets? Algunos casos en los que puede ser necesario construir páginas “al vuelo”, son los siguientes: La página se genera de acuerdo a información proporcionada por el usuario La información con la que se genera la página está cambiando frecuentemente La página utiliza información de bases de datos u otros recursos disponibles del lado del servidor
Construyendo un Servlet Para crear servlets, se utilizan las clases contenidas en los paquetes javax.servlet y javax.servlet.http Estos paquetes forman parte de la plataforma J2EE - Java 2 Enterprise Edition La documentación del API de J2EE 1.4, se encuentra disponible en
La clase javax.servlet.GenericServlet Permite construir un Servlet genérico, independiente de protocolo public void init() throws ServletException public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException public void destroy()
La clase javax.servlet.http.HttpServlet public void init() throws ServletException public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) public void doPost(HttpServletRequest request, HttpServletResponse response)
HttpServletRequest A través de las solicitudes podemos obtener los parámetros enviados en el URL del servlet, utilizando el método: String getParameter(String nombre)
HttpServletResponse Algunos métodos importantes de la respuesta, son: PrintWriter getWriter() void setContentType(String tipo)