JAVA: Servlets Diseño de aplicaciones web

Slides:



Advertisements
Presentaciones similares
Java Enterprise Edition (Java EE)
Advertisements

Modelo HTTP Request/Response
Curso de Java “Java para Web” Rogelio Ferreira Escutia.
Internet y tecnologías web
Fernando Alonso Blázquez Sesiones 06 de Mayo 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.
CUPS Configuración y Uso de Paquetes de Software
Programación Orientada a Objeto 1
Servidores Web Capítulo 2.
ÍNDICE Introducción. Trabajar con Applets. Definición de Applet.
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.
Indice Programacion cliente servidor Arquitectura Cliente-servidor
"java del lado del servidor" Servlet y JSP Java Server Pages.
Servlets.
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.
JSP Copyright ISIPE – Instituto de Servicios Informáticos para Empresas – Universidad Siglo 21 – Cualquier copia u otro uso debe ser autorizado expresamente.
EI, Profesor Ramón Castro Liceaga APLICACIONES DE JAVA CON PAGINAS WEB (Applets) UNIVERSIDAD LATINA (UNILA)
Java 2 Platform Enterprise Edition
PROGRAMACION ORIENTADA A OBJETOS II
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.
JSP COOKIES. cookies  Las cookies son datos guardados por los navegadores a instancias del servidor.  Los sitios Web las utilizan con propósitos diversos:
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.
Tecnologías para el desarrollo de aplicaciones Web
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
HTTP, CGI, Applets, Servlets y SOAP
Servlets, JSP, JavaBEANS,JDBC
Protocolos de la Capa de Aplicación
Una java servlet es un programa que se ejecuta en un servidor. Por lo general son aplicaciones Java que corren en un entorno de servidor web. Los Java.
Introducción a la Programación. Lenguaje de Máquina.
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
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.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Comparación entre applets, CGI, PHP, ASP,
TEMA 6. Applets y servlets
Por: Jorge Aguirre PUERTOS DE UN SERVIDOR WEB.  Un servidor web o servidor HTTP es un programa informático que procesa una aplicación del lado del servidor.
“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.
Fernando Alonso Nicolás Serrano Servlets con acceso a Bases de Datos 21 de Abril de 2008.
1 TEMA 8. Acceso a bases de datos Arquitectura de una aplicación que accede a una BD Arquitectura de una aplicación que accede a una BD Establecer la conexión.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
Java Applets David Gil
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.
JAVA: Servlets Diseño de servicios web © María de los Santos Pérez Hernández
Servlets Servlets son módulos que extienden a servidores “java- enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets Servlets son módulos que extienden a servidores orientados a request/response, como por ejemplo Servidores Web “java-enabled”. Un servlet puede.
Aplicaciones Web de Servidor
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.
Tecnologías de desarrollo software para la WWW Tecnologías de servidor.
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.
Cristian Fonnegra Marin
Sun Microsystems. Los servlets son objetos que corren dentro del contexto de un contenedor de servlets y extienden su funcionalidad. También podrían correr.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
APACHE WEB SERVER El proyecto Apache Web Server es un desarrollo de software en colaboración, enfocado en crear una implementación de un servidor HTTP.
Servlets Servlets son módulos que extienden a servidores “java- enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
API JDBC Java Database Connectivity. Conceptos básicos API de Conectividad a Bases de Datos Emplea SQL Standard Ventaja: los programas desarrollados en.
 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.
Temario Java 2 Enterprise Edition Arquitectura Especificación Servlets Contenedores Cookies Sesiones.
Introducción Principios de Programación Web Aplicaciones Web con JSP y Servlets de Java.
Trabajar con SERVLETS. Índice Qué son los Servlets Para qué sirven Cómo se utilizan Ejemplo Cómo probar un Servlet.
Transcripción de la presentación:

JAVA: Servlets Diseño de aplicaciones web

2 Servlets n Programas que se ejecutan en los servidores. –Añaden funcionalidad a un servidor web, del mismo modo que los applets añaden funcionalidad a los navegadores. n Similares a los scripts CGI, salvo que ofrecen una independencia de la plataforma.

Cuándo se suelen utilizar n La página web se basa en datos que proporciona el usuario. –Ejemplo: e-commerce sites. n Los datos cambian frecuentemente. –Ejemplo: Partes meteorológicos. n La página web utiliza información de BDs u otras fuentes. –Ejemplo: Aplicaciones comerciales.

Applets cliente NAVEGADOR WEB MÁQUINA VIRTUAL JAVA El usuario pide un applet en java Llega un applet en java Arranca la máquina Virtual de java y Se ejecuta el applet servidor

Servlets Base de datos Cliente Servidor

Servlets. Requisitos n El servidor debe tener una máquina virtual Java. n El servidor debe soportar la API de los servlets Java. n Servidores capaces de ejecutar servlets: –Apache Tomcat –Java Web Server –O’Reilly WebSite Professional –Lotus Domino Go WebServer –Novel IntraNetWare –IBM Internet Connection Server –Otros

Instalando un servidor Web n Jakarta Tomcat – s/webservicespack.htmlhttp://java.sun.com/webservices/download s/webservicespack.html n JSWDK 1.0 –

Java Servlet API n Extensión al JDK estándar –Extensiones del JDK extensiones son empaquetados bajo javax n Paquetes: – javax.servletjavax.servlet –javax.servlet.httpjavax.servlet.http Da soporte al protocolo HTTP y a la generación de HTML

Ejecución de un servlet n Formas de iniciar la ejecución: –Introducir la dirección URL del servlet en un navegador web. –Llamar al servlet desde una página web. –Ejecutar un servlet llamándolo desde otro servlet.

Desde un navegador web n let/nombre_servlet n Las llamadas a servlets pueden contener parámetros: – s/serv1?num1=3&num2=4

Desde una página web n Un servlet también puede ser llamado desde el código de una página web, al igual que se llamaría a cualquier CGI. n Ejemplo: –

Desde otro servlet n Se puede lanzar la ejecución de un servlet desde otro. n Pasos: –Conocer el nombre del servlet que queremos llamar. –Proporcionar acceso al objeto “Servlet” del servlet llamado. –Llamar al método público del servlet.

Desde otro servlet public class servletCalling extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {... Servlet servlet_get = (Servlet) getServletConfig().getServletContext().getServlet(“ser vletCalled”); String data_get = servlet_get.method1(data);... }

Arquitectura de los servlets n Biblioteca ‘javax.servlet’ Servlet HttpServlet MiServlet

Ciclo de vida de un servlet Servidor Servlet Carga init() Servidor Servlet Manejo de peticiones Cliente service() Servidor Servlet Descarga destroy() doGet() doPost()

Inicialización de un servlet n public void init (ServletConfig config) n Finaliza antes de la invocación de cualquier método sobre el servlet n Sólo se invoca una vez, a menos que el servidor recargue el servlet n ServletConfig: argumentos de inicialización para el servlet n Ej.: abrir ficheros o establecer conexiones a los servidores

Servicio n public void service (ServletRequest req, ServletResponse res ) n Lee la petición y produce el mensaje de respuesta n Objeto ‘ServletRequest’: –Comunicación que fluye del cliente al servidor n Objeto ‘ServletResponse’: –Encapsula la información enviada desde el servidor al cliente

HTTP Servlets

Método HTTP GET n Ejemplo: –GET /servlet/MyServlet?nombre=Juan& institucion=FI HTTP/1.1 Connection: Keep-Alive User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg n Limitación: Cuántos datos son pasados como parte del URL  Uso de HTTP POST

Método HTTP POST n Permite al cliente enviar datos al servidor –Pasar más información que en una petición HTTP GET n Ejemplo: –POST /servlet/MyServlet HTTP/1.1 User-Agent: Mozilla/4.0 ( compatible; MSIE 4.01; Windows NT) Host: Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */ Content-type: application/x-www-form-urlencoded Content-length: 39 nombre=Juan&institucion=FI

doGet() y doPost() n Sobreescribir métodos doGet() y doPost() –public void doGet ( HttpServletRequest request, HttpServletResponse response); –public void doPost ( HttpServletRequest request, HttpServletResponse response);

Destrucción del servlet n public void destroy() n Liberar los recursos (cerrar ficheros abiertos o cerrar conexiones con bases de datos). Puede ser un método vacío. El servidor espera a llamar al método destroy() hasta que todos los servicios se hayan completado o haya pasado una cantidad de tiempo determinada

Estructura de un Servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SomeServlet extends HttpServlet { // El servidor envía una página // web al cliente public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Utilizar request para leer // datos procedentes del // cliente (ej: cookies, // otros datos) // Utiliza response para // especificar la respuesta // (tipo de contenido, establecer // cookies,...) PrintWriter out = response.getWriter(); // Utilizar out para enviar el // contenido al navegador } // Análogamente, sobreescribir // doPost(). }

Ejemplo Servlets: Hola Mundo import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HolaMundoSrvlt extends HttpServlet { // El servidor envía una página web al cliente public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String titulo=“Hola Mundo”; // Utiliza response para // especificar la respuesta response.setContentType (“text/html”); out = response.getWriter(); out.println(“ ”); out.println(titulo); out.println (“ ”); out.println(“ ”+titulo+ ”); out.println(“ ”); out.close(); }

Ejemplo Servlets: Hola Mundo

Obtención y envío de información n Obtención de datos del cliente: –getParameter() getParameterValues() getParameterNames() –getReader –getInputStream() n Envío de datos al cliente: –getWriter –getOutputStream

Ejemplo: Lectura de parámetros import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ThreeParam extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String title="Leyendo 3 parámetros"; response.setContentType ("text/html"); out = response.getWriter(); out.println(" "); out.println(title); out.println(" "); out.println(" "+ title +" "); out.println(" "); out.println(" param1: "+ request.getParameter("param1")); out.println(" param2: "+ request.getParameter("param2")); out.println(" param3: "+ request.getParameter("param3")); out.println(" "); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); }

Ejemplo: Lectura de parámetros

Ejemplo: Lectura de parámetros II import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ShowParameters extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { PrintWriter out; String title="Leyendo todos los parámetros"; response.setContentType ("text/html"); out = response.getWriter(); out.println(" "); out.println(title); out.println(" ");

Ejemplo: Lectura de parámetros II out.println(" "+ title +" "); out.println(" "); out.println(" Nombre de parámetro Valores de parámetro"); Enumeration nombresDeParam = request.getParameterNames(); while (nombresDeParam.hasMoreElements()){ String nombreParam = (String) nombresDeParam.nextElement(); out.println(" " + nombreParam); out.println(" "); String[] valoresDeParam= request.getParameterValues(nombreParam); if (valoresDeParam.length == 1) { String valorParam = valoresDeParam[0]; if (valorParam.length()== 0) out.print(" No existe valor "); else out.print(valorParam); } else { out.println(" "); for (int i=0; i<valoresDeParam.length; i++) { out.println(" " + valoresDeParam[i]); } out.println(" "); } out.println(" "); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); }

Ejemplo: Lectura de parámetros II

Ejemplo: Uso de formulario Un ejemplo de formulario que utiliza POST Un ejemplo de formulario que utiliza POST Número Artículo: Cantidad: Precio Unidad: Nombre: Apellidos:

Ejemplo: Uso de formulario Dirección: Tarjeta de crédito: Visa Master Card American Express Discover Número de tarjeta de crédito: Repetición del número de tarjeta de crédito:

Ejemplo: Uso de formulario

Ejemplo: Uso de formulario

Almacenamiento del estado de un cliente n Estado del cliente: –Situación en la que se encuentra un cliente en sucesivas peticiones al servidor –Ejemplo típico de aplicación: carrito de la compra (almacenamiento de productos por parte del cliente). n Mecanismos: –“Cookies” –Seguimiento de sesiones (session tracking)

Uso de cookies n Cookie miCookie = new Cookie("Ciudad", "Madrid"); n Métodos sobre cookies: –setValue()/getValue() : Valores de una cookie –setComment()/getComment() : Comentario de una cookie –setMaxAge()/getMaxAge() : Tiempo de caducidad de una cookie –getName() : Nombre de una cookie n Las cookies se envían en la cabecera de la respuesta al cliente –addCookie(), sobre el objeto de la clase HttpServletResponse

Establecimiento de una cookie public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out;... Cookie miCookie = new Cookie("Ciudad","Madrid"); miCookie.setComment("Cookie para establecer la ciudad de origen"); miCookie.setMaxAge(3600); response.addCookie(miCookie); out = response.getWriter();... }

Recuperación de una cookie getCookies() : devuelve un array de objetos de tipo Cookie public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String valorCookie; boolean encontrado = false; int i = 0; Cookie[] misCookies; Cookie miCookie; misCookies = request.getCookies(); while (!encontrado && i<misCookies.length) { miCookie = misCookies[i]; encontrado = miCookie.getName().equals("Ciudad"); if (encontrado) valorCookie = miCookie.getValue(); i++; }... }

Acceso a bases de datos n JDBC, interfaz de acceso a un sistema de gestión de bases de datos o RDBMS n Paquete java.sql: contiene un gran número de clases e interfaces útiles para la programación del acceso a bases de datos mediante JDBC n Clases más utiles: –Driver –Connection –Statement –ResultSet

Servlets vs CGI n Eficiencia –CGI inicia un nuevo proceso para cada petición HTTP. (Solución: FastCGI) –El servlet se ejecuta solamente la primera vez que es llamado. Permanece en memoria una vez cargado y puede compartir información entre varias llamadas de clientes. Uso de threads para las distintas peticiones. n Portabilidad n Modularidad n El uso de parámetros es más sencillo en el caso de los servlets

Servlets y JSP n JSP (Java Server Pages) –Páginas dinámicas añadiendo funcionalidad al código HTML –Similar a ASP o PHP, aunque puede utilizar diferentes plataformas como servidores –Extensión de la tecnología de servlets 1.Cliente realiza una petición de una página JSP al servidor web 2.Éste envía la solicitud al motor de JSP 3.Compila la página JSP, convirtiéndola en un servlet 4.Ejecuta el servlet 5.Devuelve los resultados al cliente en formato HTML.