Tema 4: Servidores Web

Documentos relacionados
Servidores Web. Tema 4: Acceso a Páginas Web en ficheros. Output. GET /index.html. Server host. HTTP server: Apache, IIS SO Unix.

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Aplicaciones Web (Curso 2015/2016)

Computación Web (Curso 2015/2016)

Computación Web (Curso 2013/2014)

Aplicaciones Web con Servlets y JSP (I)

envía al browser. El browser despliega el archivo.

Servlets (I) Mario Muñoz Organero & Norberto Fernández Departamento de Ingeniería Telemática

Capitulo 7: Tecnologías de la Capa Media, Lógica del Negocio.

Tema 2: Diseño de la capa lógica

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

Servlets. 1. Introducción Características fundamentales Ventajas fundamentales... 2

SERVLETS. Aplicaciones Distribuidas

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Tema 7: Servidores Web (II) Contenidos

Desarrollo de aplicaciones para Internet

Tema 2: Diseño de la capa lógica

J2EE Java 2 Enterprise Edition

Java Servlets. Qué es un programa? Luis Fernando Llana Díaz. 22 de abril de input Programa output. En pascal:

Ejemplos de Servlet y JSP Web Application Development

Programación con JDBC (Java DataBase Connectivity ), Servlets y JSP (Java Server Pages)

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

JSP/SERVLETS ISIS 3710

Arquitectura Web Multicapa. Tema 6.a: Arquitectura sistema en capas. Ventajas de los sistemas. distribuidos. Arquitectura software en capas

Introducción n a Java EE: Servlets

(Dibujo de arquitectura de Ebay) Arquitectura software en capas. Arquitectura Web Multicapa. Tema 6: datos: ficheros o bbdd. 2. Capa Presentación:

Sistemas de Información 12/13 Servlets y JSPs (Java Server Pages)

Unidad IV: Servlets. Comprender la estructura básica de los Servlets Crear servlets sencillos Presentar el ciclo de vida de un Servlet.

Un servlet es una clase java que implementa la Servlet interface. Un servlet corre dentro de un contexto denominado Servlet engine.

Invocar a Recursos Web

Hello World Ajax! con Eclipse

Tema 6: Arquitectura Web Multicapa

Servidores web. Mecánica de funcionamiento

Implementando nuestro primer servlet

ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Aplicaciones Cliente - Servidor

Servlets y JSP. Qué son CGI? 04/03/2014

HTTP, CGI, Applets y Servlets

Java 2 Enterprise Edition

Introducción a los servlets

Servidores Web (II) Contenidos

Curso de Java Java para Web

Clase Java que implementa un modelo de programación peticiónrespuesta. Puede usarse para procesar cualquier tipo de petición

INTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA

3 PROGRAMACIÓN WEB CON SERVLETS

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Tema 3: Tecnologías Java distribuidas

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

Práctica 2: Extensión de un servidor con servlets

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

JAVA: Servlets. Diseño de aplicaciones web.

PROGRAMACIÓN JEE CON SERVLETS

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2

javax.servlet.genericservlet javax.servlet.http.httpservlet MiServlet

GENERACIÓN DINÁMICA DE PÁGINAS

INSTALACIÓN JAVA DE SUN ORACLE

Requisitos. Universidad ORT Arquitectura de Software

Taller de Programación

JSP Básico. Índice. 2 Traducción de los JSP a servlets Acciones Introducción a JSP... 2

Se pueden observar varios tipos de contenedores de Servlets:

En principio cada aplicación web se encuentra aislada y es independiente de las otras.

Sistemas de Información

Aplicacions web bàsiques Introducció a servlets i JSP

Introducción a las aplicaciones WEB

2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA

qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer

Java web: servlets, Jsp, Jstl, Struts & Ajax

Gestión de Registros y Respaldos en el Contexto Hospitalario.

Aplicaciones web con Tomcat y MySQL en Linux

Framework 1. Web en Java. (solo aplicaciones en mantenimiento)

Conexión de Mysql con NetBeans

Sistemas de Información 12/13 Ejercicios Tecnologías Web

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

JSP JDBC SALVADORES OLAIZOLA,

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTÓ

10. Servlets con acceso a bases de datos

Servlets. Seminario de Programacion Rafael Vázquez Pérez

Java Web J2EE con JSP

Java Web J2EE con JSP

Java Web J2EE con JSP

9. Servlets CAPÍTULO Clientes y Servidores

DESARROLLO WEB EN ENTORNO SERVIDOR

JAVASERVER PAGES (JSP)

Introducción a las aplicaciones WEB

Desarrollo Web. Parte 1 Edición Taller de Programación

Carrito de Compras con Servlet, Arreglos y Sesiones

Práctica Servlets & JDBC. Qué son? Qué necesitamos?

Tecnura ISSN: X Universidad Distrital Francisco José de Caldas Colombia

Una página JSP es simplemente una página web con elementos JSP. Todo en la página no son elementos JSP, el resto se denomina plantilla de texto.

Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor.

Elementos de Scripting Scriptlets Expresiones Declaraciones Inhabilitar los Elementos de Scripting Acciones...

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Laboratorio de Aplicaciones Telemáticas

Transcripción:

Acceso a Páginas Web en ficheros Tema 4: Servidores Web Disco Duro Apache, IIS SO Unix host Web : Open(f,./index.html ); Read(f); Output Close(f); Cabeceras + 1 2 Interfaces Web Aplicaciones CGI: Common Gateway Interface Interface Web- Aplicaciones: CGI (II) CGI program in Perl, hello.pl http://grid-nodo1.unavarra.es CGI program Apache, IIS Unix CGI Interface host Web : # Hello.pl print "Content-type: text/html\n\n"; print "<font color = blue>\n"; print "<h1>hello, World</h1>\n"; print "</font>\n"; CGI program in C, hello.c -> hello.exe HTML Content-type: text/html\n\n <font color = blue> <H1>Hello there!</h1> </font> GET /Hello.pl #include <stdio.h> main(int argc, char *argv[]) Output of Program Output of Program 3 printf("content-type: text/html%c%c",10,10); printf("<font color = blue>"); printf("<h1>hello there!</h1>"); printf("</font>"); 4

Interface Web-Aplicaciones: CGI (III) El interface CGI especifica como el proceso servidor Web comunica al proceso externo información sobre la petición del cliente escribiendola en variables de entorno, pe.: REQUEST_METHOD: contiene información sobre el metodo de la petición, QUERY_STRING: contiene un string con los datos del formulario rellenado por el cliente, CONTENT_TYPE: contiene el tipo de datos de la petición, GET Hello.pl&Name=Pepe Web Server %set REQUEST_METHOD=GET %set QUERY_STRING= Name=Pepe % Unix main(int argc, char *argv[]) char *cl; printf("content-type: text/html%c%c",10,10); if (strcmp(getenv("request_method"), "GET")) printf("this script should be referenced with a METHOD of GET.%c", 13); exit(1); cl = getenv("query_string"); if(cl == NULL) printf("no query to decode.%c",13); exit(1); 5 Interface Web Aplicacion: CGI (IV) 1 Petición -> 1 Proceso del SO. (aparte de los procesos que pueda crear el servidor web) e 1 e 2 e 3 Pid=12 Pid=13 Pid=14 6 Interface Web-Aplicación: CGI (V) Ventajas: Interface simple, No hay que modificar programas. Desventajas: Alto tiempo respuesta: creación de procesos es costosa. Poca escalabilidad: 1 proceso por cliente consumen muchos recursos. Problemas de seguridad: acceso a shell. Interface Web-Aplicaciones: API de Servidor (I) Aplicación construida sobre API del servidor Web: Apache API, IIS API, etc. Aplicación compilada con servidor Web como libreria dinámica.so o.dll. Código de aplicación cargado con proceso servidor. No se crea otro proceso por petición. Bugs en aplicación hacen fallar al proceso servidor. e 1 e 2 e 3 Sistema Operativo Hello(null); 7 8

Interface Web-Aplicaciones: API de Servidor (II) Pero algunas librerías implementadas con APIs son muy estables y muy usadas: mod_perl, mod_php en Apache permite ejecutar scripts en proceso servidor con buen rendimiento. Cada petición de script perl o php se ejecuta en el mismo proceso del servidor que atiende la petición (muy buen tiempo de respuesta). e 1 Read.php e 2 e 3 View.php Write.php Cada proceso: 1)Atiende petición 2) procesa script Sistema Operativo Mod_php(Func); 9 Arquitectura Apache Apache v1 es un servidor multiproceso: Cada peticion es atendida por un proceso. Pre-forking: Inicialización servidor: *Arrancar N procesos (pool). *N configurable en httpd.conf. Llega petición a accept Socket : *Pedir a proceso no utilizado que cree data socket y procese la petición. (buen tiempo respuesta). Web Dependiendo de la carga del servidor, el proceso principal arranca más servidores o los mata. Apache v2 es multihilo (en C y multiplataforma)-> consume menos recursos, pero es menos robusto. Accept socket Data socket Apache 10 Apache vs. servidor JAVA Apache Inconvenientes Acceso a aplicaciones no eficiente (CGI) o no robusto (API) Ventajas Acceso a ficheros eficiente. protocolo seguro HTTPS eficiente. Servlets Servlet es una clase JAVA que implementa el interface Servlet, (este interface define como atender peticiones de clientes Web) http://grid-nodo1.unavarra.es Servlet Hello.class Tomcat host Web : Servidor JAVA Lectura ficheros no eficiente. Protocolo HTTPS no eficiente. Aplicaciones JAVA. Aplicaciones multihilo e integradas en servidor-> bastante eficiente. 11 Servlet Interface Output of Servlet GET /Hello Output of Servlet 12

Contenedor de Servlets Los servlets se ejecutan en servidores multihilo que reconocen el interface de Servlets: los contenedores. Contenedores más usados: (TOMCAT, JBOSS,. ) Por cada petición de cliente el contenedor inicia un hilo en el que se ejecuta el código del Servlet. e1 e2 e3 + Contenedor Hello Hilo3 Ciclo de Vida de un Servlet 1. Administrador despliegua Servlet: Save As../FTP/HTTP. 2. Administrador pide a Contenedor inicia Servlet. Hello.init(); NO crea hilos. 3. Petición e. 4. Contenedor: 1. Crea hilo, asigna a servlet. 2. llama a método Servlet. ; 3. Finaliza/reutiliza hilo. 5. Vuelve a paso 3. 6. Administrador pide a Contenedor finaliza Servlet. Hello.destroy(); Admin init() destroy() Contenedor Hello 13 14 Interface Servlet (I) HttpServlet extiende la clase GenericServlet (también existe el interface Servlet). Metodos de HttpServlet que se sobreescriben para programar el servicio: void doget (HttpServletRequest req, HttpServletResponse resp) void dopost (HttpServletRequest req, HttpServletResponse resp) void dopost (HttpServletRequest req, HttpServletResponse resp) void dodelete (HttpServletRequest req, HttpServletResponse resp) Escribe Cabecera Escribe Cuerpo import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>hello World!</h1>"); out.println("</body>"); out.println("</html>"); Objeto tipo petición, contiene campos de petición. Objeto tipo respuesta, se rellenaran sus campos. 15 Interface Servlet (II) Métodos de HttpServletRequest (no es necesario sobreescribir): String getparameter(string name); String getremoteaddr() String getheader(string name) Int getcontentlength() Boolean issecure() String getremoteuser() HttpSession getsession() Interface HttpServletResponse: setcontenttype(string name) setcontentlength(int len) setheader(string name, String name) sendredirect(jstring location) addheader(string name,string value) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SubastaBMW extends HttpServlet int pujaactual = 0; public void dopost(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException pujaactual = Integer.parseInt (request.getparameter("mipuja")); response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html><head><title>gracias!</title> </head><body>"); out.println( Has pujado +pujaactual); out.println("</body></html>"); 16

Interface Servlet (III) Servlets pueden atender peticiones Web, u otros protocolos. Metodos de Servlets (implementado por clase GenericServlet): void init(servletconfig config) arranca el servlet, no se crea un hilo. void service(servletrequest req, ServletResponse res) llamado por el contenedor para atender una petición, crea un hilo y llama al método correspondiente doget, dopost, (no se sobreescribe) ServletConfig getservletconfig() Devuelve un objeto de tipo ServletConfig, que contiene parámetros de i nicialización del servlet. String getservletinfo() Devuelve información sobre el servlet: autor, version, etc. void destroy() El contenedor llama a este método para indicar al servlet que ya no atenderá más peticiones. Se sobreescribe para finalizar conexiones actuales de manera ordenada. 17 Contenedor TOMCAT Tomcat 5.0 implementa especificaciones Servlets v2.4 y JSP 2.0. Compuesto de varios componentes que permiten multiples configuraciones. Contiene gestor de aplicaciones via Web. Contiene un pool de threads: Similar al pool de procesos de apache. Reutilizar threads entre peticiones. e GET init() service() destroy() init, Contenedor Hello destroy Admin New Hello() 18 Aplicaciones en TOMCAT 1 Contexto -> 1 Aplicacion./webapps/ context-name / Estructura directorio es: <web-app> *.html, *.jsp, etc. -> ficheros no compilados <servlet> /WEB-INF/web.xml-----------> <servlet-name>myhello</servlet-name> descriptor de despliegue <servlet-class>helloservlet</servlet-class> (mapping, conf. sesiones, etc) </servlet> /WEB-INF/classes/ -> <servlet-mapping> clases de servlets <servlet-name>myhello</servlet-name> /WEB-INF/lib/ -> <url-pattern>/hello</url-pattern> librerias de clases JAR </servlet-mapping> </web-app> Archivos de tipo WAR: *contienen todos los ficheros de una aplicación. *se instalan en directorio./webapps/ y TOMCAT los descomprime. <display-name>myservletwar</display-name> <description>this is a simple app</description> 19 20