HTTP, CGI, Applets y Servlets



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

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

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

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

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

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Ejemplos de Servlet y JSP Web Application Development

CAPÍTULO 14. DESARROLLO

Servidores Web (II) Contenidos

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

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

PROGRAMACIÓN PÁGINAS WEB CON PHP

Capitulo 5. Implementación del sistema MDM

Modelo de Objetos Distribuidos

Programación páginas web con ASP.NET 3.5 (C#)

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

El servidor Web. Arquitectura y funcionamiento

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

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

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

Qué es una aplicación web

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

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

Crear un servidor Web en IIS

Requisitos. Universidad ORT Arquitectura de Software

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Capítulo 5. Cliente-Servidor.

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

SERVLETS. Aplicaciones Distribuidas

Infraestructura Tecnológica. Sesión 5: Arquitectura cliente-servidor

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

PORTAL DE LA CIUDAD DIGITAL DE MAZARRÓN ESQUEMA DE MÓDULOS DE LA PLATAFORMA

Repaso de las características más importantes de la programación Java y su adaptación a Android

Tema 3. Introducción a programas en el lado del servidor

Programación Orientada a Objetos con Java

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

INTRODUCCIÓN A PHP. Javier Enciso

Introducción a las Redes de Computadoras. Obligatorio

Capítulo V. Implementación

Manual del panel. Core-Admin

Capítulo 7. Implementación del Sistema

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Capítulo I. Marco Teórico

EXTENSIÓN DE UML PARA APLICACIONES WEB

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

JSP(JAVA SERVER PAGES)

Servicio de publicación de información web (HTTP)

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

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

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Internet Information Server

Programación páginas web. Servidor (PHP)

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

19. Packages o paquetes

Tema 5: Tecnologías Web

Desarrollo y servicios web

Tema 1. Introducción a JAVA

Introducción a Java LSUB. 15 de enero de 2015 GSYC

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

I. DATOS DE IDENTIFICACIÓN. 1. Unidad Académica: _Facultad de Ciencias

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

INF 473 Desarrollo de Aplicaciones en

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

El software desarrollado ha sido dividido en tres módulos: el monitoreador del tráfico, la Interfase con el usuario y la base de datos.

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

Workflows? Sí, cuántos quiere?

ARQUITECTURAS DE SOFTWARE

Internet Information Server

Clase 22 Nivel de Aplicación WWW Tema 6.- Nivel de aplicación en Internet

INTRODUCCIÓN A JAVA. Índice

1. Visión general de RMI

Diseño de Base de Datos

Componentes de una aplicación ASP.NET

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información

Servicio de VPN de la Universidad de Salamanca

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL BÁSICO

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Protocolo HTTP Apache. Servicios HTTP. Esteban De La Fuente Rubio L A TEX. Universidad Andrés Bello. 17 jun 2011

Seguridad de la aplicación para servlets y JSP (página activas java)

Estándares para el Uso de Herramientas de Desarrollo y Plataformas de Aplicaciones Web

Para el desarrollo de aplicaciones Web se han generado múltiples tecnologías entre ellas se encuentran:

1

Transcripción:

HTTP, CGI, Applets y Servlets Sistemas de Operación II CI-4821 Sep-Dic 2006 Mercedes Martínez 00-33042 Aixbel Martínez 01-34114 Mario Felaco 02-34888 José Luís Castillo 01-33691 Yonathan Ledo 01-34033

HTTP

Introducción HTTP (HyperText Transfer Protocol) Este protocolo de transferencia es el sistema mediante el cual se envían las peticiones para acceder a una página web así como también las respuestas de la misma. Algunas características del mismo: Es un protocolo sin estado. Esta basado en el modelo Cliente-Servidor. El puerto por defecto mediante el cual realiza las comunicaciones es el 80.

Introducción Ejemplo de comunicación en HTTP: Acceder la página www.host.com/index.html: Se abre el socket de comunicación en el puerto 80. Se envía un mensaje como el siguiente: GET /index.html HTTP/1.0 From: yo@host.com User-Agent: HTTPTool/1.0 [Línea en blanco]

Introducción Ejemplo de comunicación en HTTP: La respuesta del servidor es de la siguiente forma: HTTP/1.0 200 OK Date: Fri, 31 Dec 2003 23:59:59 GMT Content-Type: text/html Content-Length: 1221 <html> </html> <body> </body> <h1>página principal de tuhost</h1> (Contenido)...

CGI (Common Gateway Interface)

CGI Common Gateway Interface Definición Protocolo que proporciona una interfaz o pasarela entre un servidor de información y un proceso externo. Su función principal es la de añadir una mayor interacción a los documentos web que por medio del HTML se presentan de forma estática. Utilizando el protocolo CGI, un cliente web puede especificar un programa, conocido como Script CGI, como objeto web de destino de una petición HTTP.

Funcionamiento CGI Common Gateway Interface

Ejemplo CGI Common Gateway Interface

CGI Common Gateway Interface /cgi-bin Es un directorio especial, que contiene los scripts, configurado dentro del servidor http. El servidor conoce que este directorio contiene ejecutables que deberán ser ejecutados y su salida deberá ser enviada al navegador del cliente.

CGI Common Gateway Interface Variables de Entorno CGI CGI utiliza variables de entorno que son escritas por el servidor HTTP para pasar información sobre las peticiones a los programas externos. Algunas de estas variables son: REUQEST_METHOD: tipo de método con el que se ha realizado la petición. QUERY_STRING: contiene la cadena de caracteres codificada. CONTENT_TYPE: el tipo de contenido de los datos. CONTENT_LENGTH: la longitud de la cadena de interrogación en número de bytes.

CGI Common Gateway Interface Como se envían los datos Formato de la cadena: nombre1=valor1&nombre2=valor2&nombre3=valor3 Así que sólo hay que dividir donde están los signos & y =, y luego hacer dos cosas a cada nombre y valor: 1.Convertir todos los signos + a espacios. 2.Convertir todas las secuencias %xx al valor del carácter cuyo valor ASCII sea xx en hexadecimal. Por ejemplo convertir %3d a =.

CGI Common Gateway Interface Formas de enviar información Existen dos formas de enviar información, por medio de GET y POST. GET envía la información dentro del URL separando los campos con signos de interrogación '?' antes de la información. POST envía la información directamente al servidor, haciéndolo invisible en el URL

Ejemplo GET CGI Common Gateway Interface

Ejemplo POST CGI Common Gateway Interface

Seguridad en CGI CGI Common Gateway Interface Riesgos Vulnerabilidad Recomendaciones

Applets

Applets Definición Pequeña aplicación de software que corre dentro del contexto de otro programa. Generalmente tienen funcionalidades limitadas que estan más allá de las del programa en donde corren. Debe correr en un contenedor en el programa anfitrión, a través de un plugin.

Diferencias entre applet y script El applet corre en el lado del cliente Applets El applet generalmente posee una interfaz gráfica con el usuario Es compilado, mientras que los script son interpretados

Applets Ejemplos de applets Java applets Flash Reproductores de video/sonido (Quicktime, WMP, Real)

Java Applets Ventajas Independiente de plataformas Soportado por la mayoría de los browsers Se puede guardar en caché, acelerando el tiempo de carga Permisos limitados predeterminados Con permiso, puede tener acceso a la máquina que lo está corriendo

Java Applets Uso //Sección de importaciones public class NombreDelNuevoApplet extends Applet { // Aquí se declaran las variables de estado (public y private) /* Los métodos para la interacción con los objetos se declaran y definen aquí */ public void MetodoUno( parámetros ) { /* Aquí viene para cada método, el código Java que desempeña la tarea. Qué código se use depende del applet */ } }

Java Applets Llamadas <APPLET CODE="SuCodigo.class" WIDTH=100 HEIGHT=50> </APPLET> Llama al applet SuCodigo.class y establece su ancho y alto inicial. Cuando se acceda a la página Web donde se encuentre incluida la línea, se ejecutará el byte-code contenido en SuCodigo.class, obteniéndose el resultado de la ejecución del applet en la ventana del navegador, con soporte Java, que se esté utilizando.

Java Applets Desventajas Requiere el plugin de Java JVM tiene que correr, aumentando el tiempo de carga Se tiene que bajar de internet Se dificulta diseñar una buena interfaz gráfica Si se guinda JRE se lleva el browser y posiblemente el sistema

Servlets

Servlets Definición Contenedor o motor de Servlets Arquitectura Ciclo de Vida Modelos de subproceso y problemas con Threads Estados de los clientes Ventajas, Desventajas y Seguridad

Definición de Servlet Componente Web basado en Java Genera contenido dinámico Opción ante ASP, PHP, Python y JSP (caso particular de servlet). JSR 154

Contenedor o motor de servlets Provee servicios de red para atender las peticiones y respuestas que se envian Debe dar soporte a los protocolos HTTP/1.0, HTTP/1.1 y HTTPS Implementan la interfaz servletcontext

Arquitectura Implementa la interfaz java.servlet.servlet o hereda de una clase conveniente para el protocolo deseado, por ejemplo, java.servlet.httpservlet. Para efectuar la interacción con los clientes recibe dos objetos: Un ServletRequest, que encapsula la comunicación desde el cliente al servidor. Un ServletResponse, que encapsula la comunicación de vuelta desde el servlet hacia el cliente.

Arquitectura

Ciclo de vida

Ciclo de vida

Ciclo de vida public ShutdownExample extends HttpServlet { } private int servicecounter = 0;... protected synchronized void enteringservicemethod() { servicecounter++;} protected synchronized void leavingservicemethod() { servicecounter--;} protected synchronized int numservices() { return servicecounter; }

Ciclo de vida protected void service(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { } enteringservicemethod(); try { super.service(req, resp); } finally { leavingservicemethod(); }

Ciclo de vida... //Access methods for shuttingdown protected setshuttingdown(boolean flag){ shuttingdown = flag; } protected Boolean isshuttingdown() { return shuttingdown; } public void destroy() { if (numservices() > 0) { setshuttingdown(true); } while(numservices() > 0) { try { Thread.sleep(interval);} catch (InterruptedException e) { } } }

Ciclo de vida public void dopost(...) {... for(i = 0; ((i < lotsofstufftodo) &&!isshuttingdown()); i++) { try { partoflongrunningoperation(i); } catch (InterruptedException e) { } } }

Modelos de subproceso. Problemas con Threads. Problemas con las Variables de Instancia en accesos concurrentes. Solución: evitar las variables de instancia y utilizar variables locales definidas dentro del método service(). Otra solución: los servlets pueden cambiar este comportamiento si implementan singlethreadmodel.

Estados de los clientes 2 mecanismos: Sesiones HTTP mediante la interfaz HttpSession. Cookies.

Ventajas y Desventajas Rendimiento y Desempeño: En comparación con los CGI ejecutan con mayor rapidez ya que están basados en el modelo de Threads. Simplicidad y Portabilidad: se ejecutan en como cualquier otra aplicación java en una maquina virtual, en un entorno de servidor controlado y sólo necesita de http básico para comunicarse con los clientes

Ventajas y Desventajas Desarrollo: el programador tiene acceso a la tecnología Java y todas sus facilidades.

Seguridad Seguridad Declarativa Seguridad Programática: Se apoya en 3 métodos: Roles getremoteuser isuserinrole getuserprincipal

Seguridad Autentificaciones: Autentificación Básica HTTP. Resumen de Autentificación HTTP. Autentificación de Clientes HTTPS. Autentificación Basada en Formularios.