SlideShare una empresa de Scribd logo
1 de 34
Sistemas Distribuidos
basados en la web
El origen y razón de las páginas
web interactivas
Arquitecturas Cliente-servidor
• Normalmente para consultar, modificar y
administrar los datos de una organización
• El programa cliente era la interfaz
inteligente entre el usuario y la base de
datos
Servidor de BD
cliente
Inconvenientes de las
arquitecturas de 2 capas
• Aplicaciones monolíticas difíciles de mantener
– Toda la inteligencia está en el cliente
– Los servidores son sólo servidores de datos
• Distribución del código que cambia
• Poca reusabilidad del código
– No está orientado al desarrollo de componentes
• No se puede usar de cualquier lado
• Poca seguridad
• Mucho tráfico de datos
Arquitecturas basadas en la web
• El cliente es el browser
• La aplicación misma está en el servidor
web
• Puede existir un servidor de aplicaciones
Servidor de BD
Servidor web Servidor de
aplicacionescliente
Ventajas del esquema de n-
capas
• Clara separación de las funciones de control
de la interfaz y presentación de datos con la
lógica de la aplicación
• Reusabilidad de componentes
• Independencia de la interfaz del cliente y la
arquitectura de datos
• Mejores posibilidades de balancear la carga
• Uso de protocolos abiertos
¿Qué es la World-wide Web ?
• WWW es un sistema de hipermedia
interactivo desarrollado sobre Internet.
• Hipermedia: La idea de hipermedia es la
de juntar texto, imágenes, audio y vídeo
dentro de un mismo envoltorio llamado
documento
• Además, incluye referencias a otros
documentos del mismo tipo
¿Cómo nace la World-wide
Web ?
• El primer precedente del WWW se puede encontrar en un tratado
escrito por Vannevar Bush titulado ``As We May Think'', de 1954, en
el que básicamente animaba a los científicos a hacer más accesible
a todo el mundo sus conocimientos y experiencia. En este tratado
surgieron las nociones de hipertexto e hipermedia
• Desde entonces, muchos han sido los sistemas hipermedia que se
han creado. Como ejemplo cabe destacar el Augment de Doug
Englebart en los 70, y en los 90 el WWW de Tim Berners-Lee, TBL,
creado en el Laboratorio Europeo de Partículas Físicas (CERN) en
Ginebra, Suiza. TBL se basó en muchas fuentes para crear el
WWW:
Internet
Pero la web necesita un protocolo para
intercambiar documentos de hipermedia
Para ello hay una conversación entre el que pide un documento
Y el que lo “sirve” (invisible para el usuario del browser)
Esta conversación se realiza según el protocolo HTTP
Arquitectura Web
Para abrir una página Web en un navegador, normalmente se teclea
el correspondiente URL o se “clickea” sobre en el “link” oportuno.
Una vez que se solicita esta petición mediante el protocolo HTTP y
la recibe el servidor Web, éste localiza la página Web en su sistema
de directorios y la envía de vuelta al navegador que la solicitó,
¿ Qué necesito para “levantar”
mi sitio web ?
El Servidor Web
El servidor Web es un programa que corre sobre el servidor que
escucha las peticiones HTTP que le llegan y las satisface.
Dependiendo del tipo de la petición, el servidor Web buscará una
página Web o bien ejecutará un programa en el servidor. De
cualquier modo, siempre devolverá algún tipo de resultado
HTML al cliente o navegador que realizó la petición.
El servidor Web va a ser fundamental en el desarrollo de las
aplicaciones del lado del servidor, server side applications, que
vayamos a construir, ya que se ejecutarán en él.
¿De dónde lo saco, cómo lo
instalo ?
• Hay varios gratis que se pueden bajar de
la Internet
– JBOSS, APACHE TOMCAT
• Para instalarlo basta echar a correr el
archivo bajado (doble click)
• Obviamente, el computador debe estar en
la internet y tener una dirección IP fija y un
nombre de dominio
J2EE
• Es un conjunto de especificaciones que
implementan una arquitectura abierta de
n-capas sobre la web
• Incluye muchos elementos que se habían
desarrollado en forma “independiente”
anteriormente
• Interoperabilidad gracias a XML y SOAP
Los principales elementos de la
arquitectura J2EE
• Cliente
– Puede ser un programa “stand alone”, un applet
dentro de un browser o el browser mismo que
contacta un sevlet, un jsp o un web service
• Contenedor web
– Contiene (y sabe como hacerlos correr) las páginas
html, los servlets, JSP y web services
• Contenedor de aplicaciones
– Contiene y administra a los EJB
• Servidor de base de datos
Qué va dónde
Servidor de BD
Servidor web Servidor de
aplicacionesCliente:
Browser web
Servidor
web y de aplicaciones
Comunicación
por medio de JDBC
Páginas HTML
-Java Script
-JSP
Enterprise
Java Beans
Portlets y Web services
J2EE icluye
• Acceso a bases de datos (JDBC)
• Utilización de directorios distribuidos
(JNDI)
• Acceso a métodos remotos (RMI, CORBA,
SOAP)
• Funciones de correo electrónico
El protocolo Http
• Hypertext transfer protocol
• Especifica la forma como el cliente pide
las cosas al servidor y cómo el servidor
las manda al cliente
• Define un lenguaje de comunicación con
reglas sintácticas y gramaticales
Interaccion browser-servidor
• Cuando se ingresa una URL al navegador web pidiendo un archivo
http://servidor/index.jsp el navegador manda la siguiente información:
GET /index.jsp HTTP 1.1
Accept: image/gif, image/jpeg, application/vnd.msexcel,
application/vnd.ms-powerpoint, application/msword,
Accept-Language: de
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1; SV1)
Host: localhost:8000
Connection: Keep-Alive
<- linea en blanco
• La primera línea indica el archivo que el cliente solicita y la versión de HTTP.
Luego viene una lista de los tipos MIME que puede aceptar como retorno,
lenguaje del sistema, codificación, browser que utiliza, etc (lo que manda como
encabezado depende de la version de http y del browser). Al final se manda una
línea en blanco que determina el final de la cabecera HTTP.
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
} Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
} Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
Abrir una ventana a Internet para recibir peticiones
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
} Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
Espera requerimiento de algún cliente (navegador web)
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
} Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
Abrir canales de escritura y lectura con el cliente
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
} Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
Leer lo que manda el cliente hasta que llegue una línea vacía
Un servidor web básico
import java.net.*;
import java.io.*;
public class ServerWeb {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8000);
while(true) {
Socket s = ss.accept();
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
//aqui se debería mandar el contenido del archivo pedido
out.println("<H1>ready</H1>"); s.close();
}
}
}
Esto es sólo para ver qué viene del browser
Mandar respuesta la cliente
Modificar para mandar archivo
reuqerido
String l = in.readline();
int i = l.indexOf(“HTTP“);
String nombreArchivo = l.substring(5,i-1);
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
BufferedReader archivo = new BufferedReader(
new FileReader(nombreArchivo));
while(true) {
l = archivo.readLine();
if (l == null) break;
out.println(l);
}
}
}
}
Obtener nombre del archivo requerido de la primera línea
GET /nombre_archivo HTTPXXX
Modificar para mandar archivo
reuqerido
String l = in.readline();
int i = l.indegOf(“HTTP“);
String nombreArchivo = l.substring(5,i-1);
while (true) {
l = in.readLine(); if (l.equals("")) break;
System.out.println(l);
}
BufferedReader archivo = new BufferedReader(
new FileReader(nombreArchivo));
while(true) {
l = archivo.readLine();
if (l == null) break;
out.println(l);
}
}
}
}
Abrir archivo y mandarlo al cliente
Respuesta del servidor
El servidor responde mandando la siguiente transacción HTTP:
HTTP/1.0 200 OK
Date: Friday, 23-Feb-07 16:30:00 GMT
Server: Apache/1.1.1
Content-type: text/html
Content-length: 230
<- linea en blanco
<HTML><HEAD><TITLE> ........ </HTML>
En este mensaje el servidor utiliza la versión 1.0 de HTTP, y
manda el código de estado 200 para indicar que la petición del
cliente ha sido procesada satisfactoriamente. También se identifica
como un servidor Apache. Indica al cliente que el contenido del
documento es texto en formato HTML y que tiene una longitud de 230 bytes.
Luego de una línea en blanco viene el contenido del archivo pedido.
Un cliente web básico
import java.net.*;
import java.io.*;
public class ClientWeb {
public static void main(String[] args) throws Exception {
Socket s = new Socket(args[0], Integer.parseInt(args[1]));
PrintWriter out = new
PrintWriter(s.getOutputStream(),true);
BufferedReader in = new BufferedReader(new
InputStreamReader(s.getInputStream()));
String l;
out.println("GET /"+args[2]+" HTTP/1.0");
out.println("");
while (true) {
l = in.readLine(); if (l==null) break;
System.out.println(l);
}
System.out.println("ready");
s.close();
}
} Esto es sólo para ver qué viene del server
GET, HEAD y POST
• La primera línea de una petición contiene
los comandos HTTP, conocidos como
métodos. Existen varios, pero los más
conocidos y utilizados son tres: GET,
HEAD y POST
GET
• El método GET se utiliza para recuperar
información identificada por un URI por parte
de los navegadores. Si el URI se refiere a un
proceso generador de datos como un
programa CGI, en lugar de él, se devuelven
los datos generados por el programa. El
método GET también se puede utilizar para
pasar una pequeña cantidad de información
al servidor en forma de pares atributo-valor
añadidos al final del URI detrás de un
símbolo de interrogación, ?.
Ejemplo GET con parámetros
GET /servlet/saludar?nombre=pepe&email=pepe@dss.cl HTTP/1.0
• La longitud de la petición GET está limitada por
el espacio libre en los buffers de entrada. Por lo
que para mandar una gran cantidad de
información al servidor se utiliza el método
POST.
• Buffer: porcion de memoria en el computador
usado para traspasar datos entre dos medios
distintos (memoria principal-memoria
secundaria, memoria principal – internet)
HEAD
• El método HEAD es idéntico al GET excepto
que el servidor no devolverá el cuerpo del
mensaje en la respuesta a un método HEAD.
Esto es útil para obtener información sobre las
entidades implicadas en la petición sin que
tengan que transferirse. Sirve para comprobar si
los enlaces son válidos o para saber cuando fue
la última modificación de la entidad solicitada.
POST
• El método POST se refiere
normalmente a la invocación de
procesos que generan datos que serán
devueltos como respuesta a la petición.
Además se utiliza para aportar datos de
entrada a esos programas. En este
caso los pares atributo-valor son
incluidos en el cuerpo de la petición
separados por &.
Ejemplo POST
POST /servlet/saludar HTTP/1.0
Accept: */*
<- linea en blanco
nombre=pepe&email=pepe@dsstgo.cl
• Primero el browser manda las líneas de arriba y el servidor queda
esperando información adicional hasta que el browser corta la
comunicación (notar la diferencia con el get que solo manda una línea
y corta la comunicación)
• De este modo el método POST no sufre de las limitaciones de espacio
y puede enviar mucha más información al servidor. En particular se usa
cuando se quieren mandar archivos completos (tareas!!!!)
• Más aún, es muy conveneinte cuando se quiere mandar información
confidencial (passwords) ya que esta no queda en el historial del
browser (solo queda la primera linea)
El lenguaje html
• Hypertext markup language
• Da directivas de cómo debe mostrar un
texto
• Estas directivas pueden ser interpretadas
distintamente por cada “mostrador” de
documentos html
• (no es el objetivo de este curso aprender
bien html, pero lo vamos a necesitar)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

Entrada 11 del blog
Entrada 11 del blogEntrada 11 del blog
Entrada 11 del blog
 
Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Java
 
Publicación de páginas web
Publicación de páginas webPublicación de páginas web
Publicación de páginas web
 
Presentación1
Presentación1Presentación1
Presentación1
 
Servidores web o http
Servidores web o httpServidores web o http
Servidores web o http
 
Publicacion web
Publicacion webPublicacion web
Publicacion web
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Yenny rocio mantilla villamizar ftp
Yenny rocio mantilla villamizar ftpYenny rocio mantilla villamizar ftp
Yenny rocio mantilla villamizar ftp
 
Presentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEBPresentacion sesion01 - Programacion WEB
Presentacion sesion01 - Programacion WEB
 
Cliente web (anlli)
Cliente web (anlli)Cliente web (anlli)
Cliente web (anlli)
 
Protocolo http y WWW
Protocolo http y WWWProtocolo http y WWW
Protocolo http y WWW
 
Web Services
Web ServicesWeb Services
Web Services
 
Cliente web leider serna
Cliente web leider sernaCliente web leider serna
Cliente web leider serna
 
Cliente web leider serna
Cliente web leider sernaCliente web leider serna
Cliente web leider serna
 
Seguridad j1v2
Seguridad   j1v2Seguridad   j1v2
Seguridad j1v2
 
Trabajo de investigacion
Trabajo de investigacionTrabajo de investigacion
Trabajo de investigacion
 
Trabajo de investigacion n°01
Trabajo de investigacion n°01Trabajo de investigacion n°01
Trabajo de investigacion n°01
 

Destacado

SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATION
SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATIONSOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATION
SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATIONBangalore Property
 
Depreciation
DepreciationDepreciation
Depreciationmotoe2121
 
How to make an awesome presentation
How to make an awesome presentationHow to make an awesome presentation
How to make an awesome presentationjltmac
 
Salto de longitud (Nèstor y Marcel)
Salto de longitud (Nèstor y Marcel)Salto de longitud (Nèstor y Marcel)
Salto de longitud (Nèstor y Marcel)tottical
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLESludiviarosa
 
Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3Marc Rubiño
 
Programacion iv sesion11 php
Programacion iv sesion11 phpProgramacion iv sesion11 php
Programacion iv sesion11 phpRoberto Garcia
 
Formularios html
Formularios htmlFormularios html
Formularios htmlBB
 
Aprendiendo php 3
Aprendiendo php 3Aprendiendo php 3
Aprendiendo php 3Erick Trejo
 
Historia del computo en México
Historia del computo en México  Historia del computo en México
Historia del computo en México leocen14
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled PresentationXaque
 
Alamos corporate presentation march 31 2016
Alamos corporate presentation march 31 2016Alamos corporate presentation march 31 2016
Alamos corporate presentation march 31 2016alamosgoldinc
 
マヤ暦終了のご案内
マヤ暦終了のご案内マヤ暦終了のご案内
マヤ暦終了のご案内Takahiko Shiina
 

Destacado (20)

SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATION
SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATIONSOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATION
SOME COMMON LAPSES IN APARTMENT OWNERS' SOCIETY/ ASSOCIATION
 
Depreciation
DepreciationDepreciation
Depreciation
 
Macklemore Downtown
Macklemore   DowntownMacklemore   Downtown
Macklemore Downtown
 
7 deadly-lead-generation-mistakes
7 deadly-lead-generation-mistakes7 deadly-lead-generation-mistakes
7 deadly-lead-generation-mistakes
 
How to make an awesome presentation
How to make an awesome presentationHow to make an awesome presentation
How to make an awesome presentation
 
Modem sf inal
Modem sf inalModem sf inal
Modem sf inal
 
BT COP
BT COPBT COP
BT COP
 
Readme
ReadmeReadme
Readme
 
Salto de longitud (Nèstor y Marcel)
Salto de longitud (Nèstor y Marcel)Salto de longitud (Nèstor y Marcel)
Salto de longitud (Nèstor y Marcel)
 
Get & post
Get & postGet & post
Get & post
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLES
 
Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3
 
Programacion iv sesion11 php
Programacion iv sesion11 phpProgramacion iv sesion11 php
Programacion iv sesion11 php
 
Formularios html
Formularios htmlFormularios html
Formularios html
 
Aprendiendo php 3
Aprendiendo php 3Aprendiendo php 3
Aprendiendo php 3
 
Historia del computo en México
Historia del computo en México  Historia del computo en México
Historia del computo en México
 
Unidad 10
Unidad 10Unidad 10
Unidad 10
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Alamos corporate presentation march 31 2016
Alamos corporate presentation march 31 2016Alamos corporate presentation march 31 2016
Alamos corporate presentation march 31 2016
 
マヤ暦終了のご案内
マヤ暦終了のご案内マヤ暦終了のご案内
マヤ暦終了のご案内
 

Similar a Clase17(introduccion a la web)

Similar a Clase17(introduccion a la web) (20)

Servidor web
Servidor webServidor web
Servidor web
 
Capitulo 2 servidores
Capitulo 2   servidoresCapitulo 2   servidores
Capitulo 2 servidores
 
Capitulo 2 servidores
Capitulo 2   servidoresCapitulo 2   servidores
Capitulo 2 servidores
 
Capitulo 2 servidores
Capitulo 2   servidoresCapitulo 2   servidores
Capitulo 2 servidores
 
Capitulo 2 servidores
Capitulo 2   servidoresCapitulo 2   servidores
Capitulo 2 servidores
 
Mantenimiento Servidores de-web
Mantenimiento Servidores de-webMantenimiento Servidores de-web
Mantenimiento Servidores de-web
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Generacion de web sites dinamico
Generacion de web sites dinamicoGeneracion de web sites dinamico
Generacion de web sites dinamico
 
servidor
servidorservidor
servidor
 
Unidad_2
Unidad_2Unidad_2
Unidad_2
 
Servidores, seguridad y autenticación
Servidores, seguridad y autenticaciónServidores, seguridad y autenticación
Servidores, seguridad y autenticación
 
Servidores
ServidoresServidores
Servidores
 
Servidor Web Apache para Linux
Servidor Web Apache para LinuxServidor Web Apache para Linux
Servidor Web Apache para Linux
 
Aplicaciones Web
Aplicaciones WebAplicaciones Web
Aplicaciones Web
 
1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.ppt1.4 tecnologiasWeb.ppt
1.4 tecnologiasWeb.ppt
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
SEVIDORES WEB 1 DE MARZO.docx
SEVIDORES WEB 1  DE MARZO.docxSEVIDORES WEB 1  DE MARZO.docx
SEVIDORES WEB 1 DE MARZO.docx
 
Programación web
Programación webProgramación web
Programación web
 
Apuntes entorno cliente servidor
Apuntes entorno cliente   servidorApuntes entorno cliente   servidor
Apuntes entorno cliente servidor
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 

Más de Tensor

Libertad
LibertadLibertad
LibertadTensor
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Tensor
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisecciónTensor
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicularTensor
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colasTensor
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016Tensor
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016Tensor
 
Game maker
Game makerGame maker
Game makerTensor
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016Tensor
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivosTensor
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadenaTensor
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04Tensor
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de ordenTensor
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametrosTensor
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposiciónTensor
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricattiTensor
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioTensor
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadasTensor
 
Ondas em
Ondas emOndas em
Ondas emTensor
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticasTensor
 

Más de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 

Último (20)

DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 

Clase17(introduccion a la web)

  • 1. Sistemas Distribuidos basados en la web El origen y razón de las páginas web interactivas
  • 2. Arquitecturas Cliente-servidor • Normalmente para consultar, modificar y administrar los datos de una organización • El programa cliente era la interfaz inteligente entre el usuario y la base de datos Servidor de BD cliente
  • 3. Inconvenientes de las arquitecturas de 2 capas • Aplicaciones monolíticas difíciles de mantener – Toda la inteligencia está en el cliente – Los servidores son sólo servidores de datos • Distribución del código que cambia • Poca reusabilidad del código – No está orientado al desarrollo de componentes • No se puede usar de cualquier lado • Poca seguridad • Mucho tráfico de datos
  • 4. Arquitecturas basadas en la web • El cliente es el browser • La aplicación misma está en el servidor web • Puede existir un servidor de aplicaciones Servidor de BD Servidor web Servidor de aplicacionescliente
  • 5. Ventajas del esquema de n- capas • Clara separación de las funciones de control de la interfaz y presentación de datos con la lógica de la aplicación • Reusabilidad de componentes • Independencia de la interfaz del cliente y la arquitectura de datos • Mejores posibilidades de balancear la carga • Uso de protocolos abiertos
  • 6. ¿Qué es la World-wide Web ? • WWW es un sistema de hipermedia interactivo desarrollado sobre Internet. • Hipermedia: La idea de hipermedia es la de juntar texto, imágenes, audio y vídeo dentro de un mismo envoltorio llamado documento • Además, incluye referencias a otros documentos del mismo tipo
  • 7. ¿Cómo nace la World-wide Web ? • El primer precedente del WWW se puede encontrar en un tratado escrito por Vannevar Bush titulado ``As We May Think'', de 1954, en el que básicamente animaba a los científicos a hacer más accesible a todo el mundo sus conocimientos y experiencia. En este tratado surgieron las nociones de hipertexto e hipermedia • Desde entonces, muchos han sido los sistemas hipermedia que se han creado. Como ejemplo cabe destacar el Augment de Doug Englebart en los 70, y en los 90 el WWW de Tim Berners-Lee, TBL, creado en el Laboratorio Europeo de Partículas Físicas (CERN) en Ginebra, Suiza. TBL se basó en muchas fuentes para crear el WWW:
  • 8. Internet Pero la web necesita un protocolo para intercambiar documentos de hipermedia Para ello hay una conversación entre el que pide un documento Y el que lo “sirve” (invisible para el usuario del browser) Esta conversación se realiza según el protocolo HTTP
  • 9. Arquitectura Web Para abrir una página Web en un navegador, normalmente se teclea el correspondiente URL o se “clickea” sobre en el “link” oportuno. Una vez que se solicita esta petición mediante el protocolo HTTP y la recibe el servidor Web, éste localiza la página Web en su sistema de directorios y la envía de vuelta al navegador que la solicitó,
  • 10. ¿ Qué necesito para “levantar” mi sitio web ? El Servidor Web El servidor Web es un programa que corre sobre el servidor que escucha las peticiones HTTP que le llegan y las satisface. Dependiendo del tipo de la petición, el servidor Web buscará una página Web o bien ejecutará un programa en el servidor. De cualquier modo, siempre devolverá algún tipo de resultado HTML al cliente o navegador que realizó la petición. El servidor Web va a ser fundamental en el desarrollo de las aplicaciones del lado del servidor, server side applications, que vayamos a construir, ya que se ejecutarán en él.
  • 11. ¿De dónde lo saco, cómo lo instalo ? • Hay varios gratis que se pueden bajar de la Internet – JBOSS, APACHE TOMCAT • Para instalarlo basta echar a correr el archivo bajado (doble click) • Obviamente, el computador debe estar en la internet y tener una dirección IP fija y un nombre de dominio
  • 12. J2EE • Es un conjunto de especificaciones que implementan una arquitectura abierta de n-capas sobre la web • Incluye muchos elementos que se habían desarrollado en forma “independiente” anteriormente • Interoperabilidad gracias a XML y SOAP
  • 13. Los principales elementos de la arquitectura J2EE • Cliente – Puede ser un programa “stand alone”, un applet dentro de un browser o el browser mismo que contacta un sevlet, un jsp o un web service • Contenedor web – Contiene (y sabe como hacerlos correr) las páginas html, los servlets, JSP y web services • Contenedor de aplicaciones – Contiene y administra a los EJB • Servidor de base de datos
  • 14. Qué va dónde Servidor de BD Servidor web Servidor de aplicacionesCliente: Browser web Servidor web y de aplicaciones Comunicación por medio de JDBC Páginas HTML -Java Script -JSP Enterprise Java Beans Portlets y Web services
  • 15. J2EE icluye • Acceso a bases de datos (JDBC) • Utilización de directorios distribuidos (JNDI) • Acceso a métodos remotos (RMI, CORBA, SOAP) • Funciones de correo electrónico
  • 16. El protocolo Http • Hypertext transfer protocol • Especifica la forma como el cliente pide las cosas al servidor y cómo el servidor las manda al cliente • Define un lenguaje de comunicación con reglas sintácticas y gramaticales
  • 17. Interaccion browser-servidor • Cuando se ingresa una URL al navegador web pidiendo un archivo http://servidor/index.jsp el navegador manda la siguiente información: GET /index.jsp HTTP 1.1 Accept: image/gif, image/jpeg, application/vnd.msexcel, application/vnd.ms-powerpoint, application/msword, Accept-Language: de Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: localhost:8000 Connection: Keep-Alive <- linea en blanco • La primera línea indica el archivo que el cliente solicita y la versión de HTTP. Luego viene una lista de los tipos MIME que puede aceptar como retorno, lenguaje del sistema, codificación, browser que utiliza, etc (lo que manda como encabezado depende de la version de http y del browser). Al final se manda una línea en blanco que determina el final de la cabecera HTTP.
  • 18. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser
  • 19. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser Abrir una ventana a Internet para recibir peticiones
  • 20. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser Espera requerimiento de algún cliente (navegador web)
  • 21. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser Abrir canales de escritura y lectura con el cliente
  • 22. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browserEsto es sólo para ver qué viene del browser Leer lo que manda el cliente hasta que llegue una línea vacía
  • 23. Un servidor web básico import java.net.*; import java.io.*; public class ServerWeb { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(8000); while(true) { Socket s = ss.accept(); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } //aqui se debería mandar el contenido del archivo pedido out.println("<H1>ready</H1>"); s.close(); } } } Esto es sólo para ver qué viene del browser Mandar respuesta la cliente
  • 24. Modificar para mandar archivo reuqerido String l = in.readline(); int i = l.indexOf(“HTTP“); String nombreArchivo = l.substring(5,i-1); while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } BufferedReader archivo = new BufferedReader( new FileReader(nombreArchivo)); while(true) { l = archivo.readLine(); if (l == null) break; out.println(l); } } } } Obtener nombre del archivo requerido de la primera línea GET /nombre_archivo HTTPXXX
  • 25. Modificar para mandar archivo reuqerido String l = in.readline(); int i = l.indegOf(“HTTP“); String nombreArchivo = l.substring(5,i-1); while (true) { l = in.readLine(); if (l.equals("")) break; System.out.println(l); } BufferedReader archivo = new BufferedReader( new FileReader(nombreArchivo)); while(true) { l = archivo.readLine(); if (l == null) break; out.println(l); } } } } Abrir archivo y mandarlo al cliente
  • 26. Respuesta del servidor El servidor responde mandando la siguiente transacción HTTP: HTTP/1.0 200 OK Date: Friday, 23-Feb-07 16:30:00 GMT Server: Apache/1.1.1 Content-type: text/html Content-length: 230 <- linea en blanco <HTML><HEAD><TITLE> ........ </HTML> En este mensaje el servidor utiliza la versión 1.0 de HTTP, y manda el código de estado 200 para indicar que la petición del cliente ha sido procesada satisfactoriamente. También se identifica como un servidor Apache. Indica al cliente que el contenido del documento es texto en formato HTML y que tiene una longitud de 230 bytes. Luego de una línea en blanco viene el contenido del archivo pedido.
  • 27. Un cliente web básico import java.net.*; import java.io.*; public class ClientWeb { public static void main(String[] args) throws Exception { Socket s = new Socket(args[0], Integer.parseInt(args[1])); PrintWriter out = new PrintWriter(s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String l; out.println("GET /"+args[2]+" HTTP/1.0"); out.println(""); while (true) { l = in.readLine(); if (l==null) break; System.out.println(l); } System.out.println("ready"); s.close(); } } Esto es sólo para ver qué viene del server
  • 28. GET, HEAD y POST • La primera línea de una petición contiene los comandos HTTP, conocidos como métodos. Existen varios, pero los más conocidos y utilizados son tres: GET, HEAD y POST
  • 29. GET • El método GET se utiliza para recuperar información identificada por un URI por parte de los navegadores. Si el URI se refiere a un proceso generador de datos como un programa CGI, en lugar de él, se devuelven los datos generados por el programa. El método GET también se puede utilizar para pasar una pequeña cantidad de información al servidor en forma de pares atributo-valor añadidos al final del URI detrás de un símbolo de interrogación, ?.
  • 30. Ejemplo GET con parámetros GET /servlet/saludar?nombre=pepe&email=pepe@dss.cl HTTP/1.0 • La longitud de la petición GET está limitada por el espacio libre en los buffers de entrada. Por lo que para mandar una gran cantidad de información al servidor se utiliza el método POST. • Buffer: porcion de memoria en el computador usado para traspasar datos entre dos medios distintos (memoria principal-memoria secundaria, memoria principal – internet)
  • 31. HEAD • El método HEAD es idéntico al GET excepto que el servidor no devolverá el cuerpo del mensaje en la respuesta a un método HEAD. Esto es útil para obtener información sobre las entidades implicadas en la petición sin que tengan que transferirse. Sirve para comprobar si los enlaces son válidos o para saber cuando fue la última modificación de la entidad solicitada.
  • 32. POST • El método POST se refiere normalmente a la invocación de procesos que generan datos que serán devueltos como respuesta a la petición. Además se utiliza para aportar datos de entrada a esos programas. En este caso los pares atributo-valor son incluidos en el cuerpo de la petición separados por &.
  • 33. Ejemplo POST POST /servlet/saludar HTTP/1.0 Accept: */* <- linea en blanco nombre=pepe&email=pepe@dsstgo.cl • Primero el browser manda las líneas de arriba y el servidor queda esperando información adicional hasta que el browser corta la comunicación (notar la diferencia con el get que solo manda una línea y corta la comunicación) • De este modo el método POST no sufre de las limitaciones de espacio y puede enviar mucha más información al servidor. En particular se usa cuando se quieren mandar archivos completos (tareas!!!!) • Más aún, es muy conveneinte cuando se quiere mandar información confidencial (passwords) ya que esta no queda en el historial del browser (solo queda la primera linea)
  • 34. El lenguaje html • Hypertext markup language • Da directivas de cómo debe mostrar un texto • Estas directivas pueden ser interpretadas distintamente por cada “mostrador” de documentos html • (no es el objetivo de este curso aprender bien html, pero lo vamos a necesitar)