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

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

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

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

J2EE Java 2 Enterprise Edition

Ejemplos de Servlet y JSP Web Application Development

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

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

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

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

Introducción a los servlets

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

Implementando nuestro primer servlet

HTTP, CGI, Applets y Servlets

Servidores Web (II) Contenidos

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"

3 PROGRAMACIÓN WEB CON SERVLETS

Java 2 Enterprise Edition

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

Tema 6: Arquitectura Web Multicapa

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

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

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

PROGRAMACIÓN JEE CON SERVLETS

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

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

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

Aplicaciones Cliente - Servidor

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

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

GENERACIÓN DINÁMICA DE PÁGINAS

JAVA: Servlets. Diseño de aplicaciones web.

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

Requisitos. Universidad ORT Arquitectura de Software

JSP JDBC SALVADORES OLAIZOLA,

Aplicaciones web con Tomcat y MySQL en Linux

2015 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA

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

9. Servlets CAPÍTULO Clientes y Servidores

Sistemas de Información

El Internet tuvo origen en los Estados Unidos de Norte América cuando en un proyecto

10. Servlets con acceso a bases de datos

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

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

DESARROLLO WEB EN ENTORNO SERVIDOR

CAPÍTULO 14. DESARROLLO

PROGRAMACIÓN VISUAL ANALISTA PROGRAMADOR UNIVERSITARIO FAC DE INGENIERIA - PLAN 2008 AÑO 2010

INSTALACIÓN JAVA DE SUN ORACLE

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

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

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

Introducción a las aplicaciones WEB

A Mayor Nivel: HTML II. Taller de Proyecto II

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

[CASI v.0109] Pág. 1

qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer

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

(de documentos 09-JSP-Intro.pdf y 10-JSP-Scripting- Elements.pdf) Página 296

Curso Java Web (JSP's/Servlets)

Curso de desarrollo web en entorno de servidor

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.

Configuración de Tomcat para usar SSL

Conexión de Mysql con NetBeans

Tema 5: Tecnologías Web

ARQUITECTURAS CLIENTE/ SERVIDOR

JAVA WEB SERVICES. Realizado por: Diana Alfaro Complementado por: Carlos Sánchez Página 1

CGI (Common Gateway Interface) es un modo sencillo de crear contenido dinámico en un sitio Web

CAPITULO IV 4. Utilización de Servlets en AVCIDE

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java.

Contiene código HTML normal junto elementos especiales de JSP. Internamente, el servidor de aplicaciones las compilará a un servlet

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

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

Objetivo de aprendizaje del tema

El servidor Web Tema 2.- Nivel de aplicación en Internet

Capítulo IV. Implementación.

3.3 Caso de estudio: diseño e implementación de un servicio/cliente REST

Aplicaciones Web. Introducción. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

Laboratorio de Aplicaciones Telemáticas Ingeniería Técnica de Telecomunicación Especialidad en Telemática

qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer

Transacciones: 2PC y 3PC. Aplicaciones de Internet: HTTP/Applets, HTTP/GCI y Java Servlets

Práctica 5: Servidor web concurrente en Java

3.3 Caso de estudio: diseño e

Laboratorio de Aplicaciones Telemáticas

Programación dinámica con Java: Servlets Y JSP PROGRAMACIÓN DINÁMICA CON JAVA: SERVLETS Y JSP. moncho.mendez@uvigo.es

CGI. Qué significa CGI?

Fecha: 13 de Agosto de 2001 Relacionada con J2EE1.3 y Tomcat 4 Desde entonces ya ha aparecido la versión 2.4, emparejada con J2EE 1.

Tutorial Web Dinámica con Servlets y JSP Sesion 3

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response.

Java EE JavaServer Pages (JSP)

EL CAMINO A LA CERTIFICACION CON SERVLETS Y JSP EL CAMINO A LA CERTIFICACION CON SERVLETS Y JSP SCWCD RAFAEL ALCOCER CALDERA.

Tema 7. Java Servlets

Programación de páginas web dinámicas con CGIs

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

SERVLETS MARIO OSVALDO BRESSANO

Manual ca011 CURSO JAVA, SERVER PAGES JSP Y SERVLETS

Qué ofrece Autentia?

JSP(JAVA SERVER PAGES)

WEB. Laboratorio de Redes de Computadores II TEL 242. Lab. Redes II. Laboratorio de Redes de Computadores II

Tutorial JSP JavaServer Pages

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO

Pasarela de pagos de la Administración Pública Vasca V2. Integración con Sistemas BackEnd de Administraciones

Transcripción:

Tema 4: Servidores Web 1 Acceso a Páginas Web en ficheros Server host Disco Duro HTTP server: Apache, IIS SO Unix Client host Web Client: Iexplorer, FireFox GET /index.html Open(f,./index.html ); Read(f); Output Close(f); Cabeceras + Content of index.html 2

Interfaces Web Aplicaciones CGI: Common Gateway Interface Server host http://grid-nodo1.unavarra.es CGI program HTTP server: Apache, IIS Sistema Operativo Unix Client host Web Client: Iexplorer, FireFox CGI Interface GET /index.html Content of index.html exec./hello.pl GET /Hello.pl Output of Program Output of Program 3 Interface Web- Aplicaciones: CGI (II) CGI program in Perl, hello.pl # 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 #include <stdio.h> HTML Content-type: text/html\n\n <font color = blue> <H1>Hello there!</h1> </font> main(int argc, char *argv[]) { 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, Client GET Hello.pl&Name=Pepe Web Server %set REQUEST_METHOD=GET %set QUERY_STRING= Name=Pepe % exec./hello.pl 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); Sistema Operativo Unix 5 Interface Web Aplicacion: CGI (IV) 1 Petición -> 1 Proceso del SO. Cliente 1 Pid=12 (aparte de los procesos que pueda crear el servidor web) Cliente 2 Cliente 3 Web Server exec./hello.pl exec./hello.pl exec./hello.pl Pid=13 Pid=14 Sistema Operativo 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. 7 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. Cliente 1 Cliente 2 Cliente 3 Web Server Sistema Operativo Hello(null); 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). Cliente 1 Cliente 2 Cliente 3 Read.php View.php Write.php Cada proceso: 1)Atiende petición 2) procesa script Web Server 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 Client Dependiendo de la carga del servidor, el proceso principal arranca más servidores o los mata. Accept socket Data socket Fork() Fork() Fork() Fork() Apache Web Server Apache v2 es multihilo (en C y multiplataforma)-> consume menos recursos, pero es menos robusto. 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. Servidor JAVA Lectura ficheros no eficiente. Protocolo HTTPS no eficiente. Aplicaciones JAVA. Aplicaciones multihilo e integradas en servidor-> bastante eficiente. 11 Servlets Servlet es una clase JAVA que implementa el interface Servlet, (este interface define como atender peticiones de clientes Web) Server host http://grid-nodo1.unavarra.es Servlet Hello.class HTTP server: Tomcat Java Virtual Machine Client host Web Client: Iexplorer, FireFox Servlet Interface Hello.doGet() GET /index.html Content of index.html GET /Hello Output of Servlet 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. Cliente1 Cliente2 Cliente3 Hilo1 Web Server+ Contenedor Hello.doGet() Hello.doGet() Hello.doGet() Hello Hilo1 Hilo2 Hilo3 Java Virtual Machine Process Sistema Operativo 13 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 Cliente. 4. Contenedor: 1. Crea hilo, asigna a servlet. 2. llama a método Servlet. Hello.doGet(); 3. Finaliza/reutiliza hilo. 5. Vuelve a paso 3. 6. Administrador pide a Contenedor finaliza Servlet. Hello.destroy(); Admin Client Hilo1 init() destroy() Contenedor Hello Hello.doGet() Java Virtual Machine Sistema Operativo Hilo2 Process 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. Hilo1 Cliente GET init() service() destroy() init, Contenedor Hello destroy Admin New Hello() Process Java Virtual Machine Sistema Operativo 18 Hilo2

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