Aplicaciones Web

Anuncio
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors
Aplicaciones Web
Formularios
<HTML>
<HEAD><TITLE>Formulario Simple</TITLE></HEAD>
<BODY>
<H2>El formulario más simple</H2>
<FORM action="http://localhost/cgi-bin/queryget.exe" method=GET >
Introduzca su nombre:  
<INPUT type="text" name="nombre" size="25"><BR><BR>
<INPUT type="submit" value="Enviar">   
<INPUT type="reset" value="Borrar">
</FORM>
</BODY>
</HTML>
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
2
1
Formas de envío
†
†
Métodos más usados: GET y POST
GET
– Designado para obtener información (un documento, un gráfico o el
resultado de la consulta a una BD)
– Usado al escribir una URL en el navegador
– Usado cuando se clica en un hiperlink
†
POST
– Designado para enviar información (un nº de tarjeta de crédito, nuevos
datos o información para guardar en una BD)
†
Cualquiera de los dos puede usarse cuando se envía un
formulario HTML
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
v.2006.02
3
Método GET
†
Puede incluir parámetros en el URL
http://http://localhost/cgi-bin/queryget.exe?nombre1=valor1&nombre2=valor2
http://http://localhost/cgi-bin/queryget.exe?nombre=Antonia
†
Secuencia de caracteres añadida a la URL:
– QUERY STRING
†
†
†
v.2006.02
No es muy seguro, ya que los datos viajan junto a la dirección y
son vistos por todo el mundo en la barra de direcciones
El tamaño de la información enviada estará limitada
La URL puede ser guardada o enviada por e-mail
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
4
2
Método POST
†
Técnica diferente de envío de información
– En algunos casos se necesita enviar Mb
†
Características:
–
–
–
–
–
–
A través de una conexión “socket”
Datos como parte del cuerpo de la petición HTTP
Longitud ilimitada
El intercambio es invisible para el cliente
La URL no cambia en absoluto
La petición no puede ser guardada ni enviada por e-mail e incluso no
puede ser “refrescada”
– Ofrece un extra de seguridad puesto que el “access log” del servidor que
guarda las URLs no guarda los datos enviados mediante POST.
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
v.2006.02
5
Common Gateway Interface (CGI)
Servidor Web pasa la petición a un programa externo
† La salida de este programa se envía al cliente, en lugar
de un archivo estático
† Permite la creación de páginas dinámicas
† Puede programarse en cualquier lenguaje
†
Servidor Web basado en CGI
Petición al CGI-1
v.2006.02
Proceso
Principal
Proceso Hijo del CGI-1
Petición al CGI-2
Proceso Hijo del CGI-2
Petición al CGI-1
Proceso Hijo del CGI-1
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
6
3
Common Gateway Interface (CGI)
Web server host
CGI script
web client host
HTTP server
web client
request for hello.html
contents of hello.html
request for hello.cgi
data, if any, from the client
HTTP server response, including dynamically generated web page
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
v.2006.02
7
Common Gateway Interface (CGI)
Multiproceso: cada proceso atiende una petición
† Ciclo de vida de una petición
†
–
–
–
–
–
†
Se crea proceso,
Se carga programa,
Se ejecuta (compilado/ interpretado),
Se descarga,
Se termina proceso.
Desventajas multiproceso:
– coste memoria e inicio proceso.
– Sol: Arrancar varios procesos (Apache), Multithreading
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
8
4
Java Servlets
Misma finalidad que los CGIs
† Programados en Java
† Más sencillos de desarrollar
† Ventajas de rendimiento en el servidor
†
Servidor Web basado en Java Servlet
Proceso Principal
Petición al Servlet-1
JVM
Servlet-1
Petición al Servlet-2
Petición al Servlet-1
Thread
Servlet-2
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
v.2006.02
9
Java Servlets
†
Multithread: cada thread atiende una petición
– Aunque es posible especificar que solo se permite un hilo
extends HttpServlet implements SingleThreadModel
†
Ciclo de vida de una petición
– Primera petición:
• se carga en JVM
• se crea thread
• se ejecuta
– Segunda y posteriores peticiones:
• Se ejecuta
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
10
5
Java Servlets y formularios
<HTML>
<HEAD><TITLE>Formulario Simple</TITLE></HEAD>
<BODY>
<H2>El formulario más simple</H2>
<FORM action="http://127.0.0.1:8080/examples/servlet/OneParameters"
method=POST >
Introduzca su nombre:  
<INPUT type="text" name="nombre" size="25"><BR><BR>
<INPUT type="submit" value="Enviar">   
<INPUT type="reset" value="Borrar">
</FORM>
</BODY>
</HTML>
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
11
Java Servlets y formularios
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class OneParameters extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws
ServletException, IOException {
// Código que se ejecutará con una petición GET de un formulario (ver siguiente transp.)
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// Código que se ejecutará con una petición POST de un formulario
doGet(request, response);
}
}
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
12
6
Java Servlets y formularios
public void doGet(HttpServletRequest request,HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
// Añadir etiquetas de html: out.println(<HTML>) …
PrintWriter out = response.getWriter();
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.println( paramName);
String[] paramValues = request.getParameterValues(paramName);
for(int i=0; i<paramValues.length; i++) {
out.println(paramValues[i]);
}
}
}
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
13
Lenguajes compilados vs interpretados
†
†
†
Lenguajes compilados: una vez escrito el programa, éste se traduce
a partir de su código fuente por medio de un compilador en un
archivo ejecutable para una determinada plataforma (por ejemplo
Solaris para Sparc, Windows NT para Intel, etc.).
lenguaje interpretado es aquel en el que las instrucciones se
traducen o interpretan una a una siendo típicamente unas 10 veces
más lentos que los programas compilados.
Algunos entornos de programación incluyen los dos mecanismos,
primero el código fuente se traduce a un código intermedio que luego
se interpreta en una máquina virtual, pero que también puede
compilarse justo antes de ejecutarse. La máquina virtual y los
compiladores “Just in Time” de Java son un ejemplo de ello.
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
14
7
Applets
† Programa
en Java diseñado para ser ejecutado en
el contexto de una página web
† Un applet se carga y se ejecuta desde cualquier
explorador que soporte Java
– utilidad appletviewer de Sun
† Los
applets se implementan creando una subclase
de la clase Applet
– java.applet.Applet
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
15
Applets
†
Applet HolaMundo de ejemplo
import java.awt.Graphics;
import java.applet.Applet;
public class HolaMundo extends Applet {
public void paint( Graphics g ) {
g.drawString( "Hola Mundo!",50,25 ) ;
}
}
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
16
8
Applets
†
Cómo ejecutar un applet
<HTML>
<HEAD>
<TITLE> Primer programa </TITLE>
</HEAD>
<BODY>
Salida del programa (Applet):
<APPLET CODE=“HolaMundo.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
v.2006.02
17
Applets
†
Una sesión web con un applet
Servidor
Cliente
Petición
HolaMundo.html
Servidor web
HolaMundo.html
HolaMundo.class
v.2006.02
HolaMundo.html
Petición
HolaMundo.class
Navegador
HolaMundo.class
HolaMundo.class
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
18
9
Applets
†
Ciclo de vida
– Carga del applet
• Se crea una instancia a la clase del applet
• El applet se inicializa (init)
• El applet comienza su ejecución (start)
– Abandonar y volver a la página del applet
• Si el usuario abandona la página, el applet puede pararse a sí
mismo (stop)
• Si el usuario vuelve a la página, el applet comenzará de nuevo
(start)
v.2006.02
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
Departament d’Arquitectura de Computadors - UPC
19
10
Descargar