Anda di halaman 1dari 86

Introduccin a las

Tecnologas Web
Java y Servicios Web I
Master en Ingeniera Matemtica

Manuel Montenegro
Dpto. Sistemas Informticos y Computacin

Desp. 467 (Mat) montenegro@fdi.ucm.es


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 2


Clientes y servidores

Un servidor es un programa que proporciona
recursos o servicios.

Un cliente es un programa que realiza
peticiones al servidor sobre estos servicios.
Clientes
Servidor
Protocolo

Protocolo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 3


Puertos

Un servidor puede ofrecer distintos tipos de
servicios. Cada uno de ellos se realiza a travs
de un puerto en la mquina servidor.

Cada puerto est identificado con un nmero
entre 0 y 65535.

Puertos 1 1024
Servidor
20 Reservados para el S.O. y para
22
protocolos conocidos.

Puertos 1024 49151
25
Pueden ser usados para cualquier
80 aplicacin.
110
Puertos 49152 65535
Dinmicos/privados.
31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 4
Puertos
Servidor web Cliente web

Protocolo HTTP
80

Cliente de
Servidor de correo
correo
110 Protocolo POP3

Protocolo SMTP
25
Protocolo IMAP
143

Servidor Driver JDBC


MySQL
SQL
3306

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 5


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 6


Comunicacin mediante sockets

Los sockets conforman el mtodo ms rudimentario
de comunicacin sobre los protocolos TCP/IP.

Para que un cliente pueda conectarse a un servidor,
necesita:

Direccin IP dnde localizar al servidor.
Cuatro nmeros entre 0 y 255. (Ej: 147.96.80.110)

Nmero de puerto, en el programa servidor est a la
espera.

Tambin sirve un nombre del dominio, en lugar de
una direccin IP: www.ejemplo.com

Servidor DNS: Asocia cada nombre con su IP.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 7


Comunicacin mediante sockets

Una vez establecido un socket entre dos
ordenadores, la comunicacin se realiza
mediante dos canales de datos, de la misma
manera en la que se accede un archivo en Java.

Servidor
Cliente

InputStream OutputStream

5555
OutputStream InputStream

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 8


Creacin de sockets en Java

Caso sencillo:

El cliente enva un nmero al servidor.

El servidor devuelve el nmero recibido elevado al
cuadrado.

Servidor
Cliente

InputStream OutputStream
7
5555
49
OutputStream InputStream

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 9


La clase ServerSocket

Paquete java.net

Un objeto ServerSocket espera la conexin de
un cliente a travs de la red.

Constructores: puerto
ServerSocket(int puerto)
ServerSocket(int puerto, int longCola)

Mtodos:
public Socket accept() throws IOException

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 10


La clase Socket

Representa una conexin particular entre un
cliente determinado y un servidor.

Constructor:
Socket(String host, int puerto)

Mtodos:
public InetAddress getInetAddress()
public InputStream getInputStream()
public OutputStream getOutputStream()

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 11


Ejemplo
public class ServidorCalculo implements Runnable {
public void run() {
ServerSocket server = null;
Socket s = null;
Scanner sc = null;
PrintWriter pw = null;
try {
server = new ServerSocket(5555);
System.out.println("Escuchando en el puerto 5555");
while (true) {
s = server.accept();
System.out.println("Recibida conexin desde " + s.getInetAddress());
sc = new Scanner(s.getInputStream());
int n = sc.nextInt();
System.out.println("He recibido un " + n);
pw = new PrintWriter(s.getOutputStream());
pw.print(n*n);
pw.flush();
pw.close();
sc.close();
}
} catch (IOException e) { e.printStackTrace(); }
finally {
if (s != null) try { s.close(); } catch (IOException e) {}
if (server != null) try {server.close();} catch (IOException e) {}
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 12


Ejemplo
public class ServidorCalculo implements Runnable {

public static void main(String[] args) {
Thread t = new Thread(new ServidorCalculo());
t.setDaemon(true);
t.start();
System.out.println("Pulsa INTRO para terminar.");
Scanner sc = new Scanner(System.in);
sc.nextLine();
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 13


Ejemplo
public class ClienteCalculo {
public static void main(String[] args) {
Socket s = null;
PrintWriter pw = null;
Scanner sc = null;
try {
s = new Socket("localhost", 5555);
pw = new PrintWriter(s.getOutputStream());
pw.println(7);
pw.flush();
sc = new Scanner(s.getInputStream());
int result = sc.nextInt();
System.out.println("He recibido un " + result);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
sc.close();
pw.close();
try {s.close();} catch (IOException e) {}
}
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 14


Ejemplo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 15


Otro ejemplo: servidor
public class UppercaseServer {
public static void main(String[] args) throws Exception {
ServerSocket server = null;
Scanner scIn = null;
PrintWriter pwOut = null;
try {
// Esperar conexin con cliente
server = new ServerSocket(5555);
System.out.println("Esperando conexin");
Socket s = server.accept();
System.out.println("Conexin establecida con " + s.getInetAddress());

// Obtener lneas de texto a partir del cliente,


// hasta recibir una lnea en blanco
scIn = new Scanner(s.getInputStream());
String str; ArrayList para
ArrayList<String> lineas = new ArrayList<String>(); almacenar las
do { cadenas recibidas
str = scIn.nextLine();
System.out.println("Recibido: " + str);
lineas.add(str);
} while (!str.isEmpty());
..

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 16


Otro ejemplo: servidor
// Recorrer las lneas de texto recibidas, convertirlas a
// maysculas, y devolverlas al cliente.
pwOut = new PrintWriter(s.getOutputStream());
for (String linea : lineas) {
System.out.println("Envo: " + linea.toUpperCase());
pwOut.println(linea.toUpperCase());
pwOut.flush();
}
} finally {
if (pwOut != null) pwOut.close();
if (scIn != null) scIn.close();
if (server != null) server.close();
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 17


Otro ejemplo: cliente
public class SingleClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 5555);
Scanner sc = new Scanner(System.in);
PrintWriter pw = new PrintWriter(s.getOutputStream());
String str = null;
do { Enviar al servidor
System.out.print("CLIENTE >>> "); las lneas ledas
str = sc.nextLine(); de teclado, hasta
pw.println(str);
pw.flush(); encontrar una lnea
en blanco
} while (!str.isEmpty());

Scanner scOut = new Scanner(s.getInputStream());


while (scOut.hasNextLine()) { Imprimir la
System.out.println(scOut.nextLine()); respuesta del
} servidor
scOut.close();
pw.close();
s.close();
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 18


Ejemplo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 19


Y si...?
public class SingleClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("www.mat.ucm.es", 80);
...
}
}

Servidor web Cliente web

Protocolo HTTP
80

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 20


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 21


Lenguaje HTML

HTML HyperText Markup Language.

Lenguaje para definicin de la estructura y
contenido de pginas web.

Es un lenguaje de marcado: texto sin formato
al que se aaden etiquetas (tags) para definir
su estructura.

Etiquetas de inicio: <etiqueta>

Etiquetas de cierre: </etiqueta>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 22


Primer ejemplo en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Primer ejemplo en HTML</title>
</head>
<body>
Sencillo, no?
<!-- Esto es un comentario -->
</body>
</html>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 23


Primer ejemplo en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> Tipo de
documento HTML
<title>Primer ejemplo en HTML</title>
</head>
<body>
Sencillo, no?
<!-- Esto es un comentario -->
</body>
</html>

La primera lnea indica qu tipo de documento HTML se


define con esta pgina.

HTML estndar, versin 4 (W3C)

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 24


Primer ejemplo en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Primer ejemplo en HTML</title> Cabecera
</head>
<body>
Sencillo, no?
<!-- Esto es un comentario -->
</body>
</html>

La cabecera incluye informacin general sobre la pgina:



Ttulo.

Hojas de estilo, etc.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 25


Primer ejemplo en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Primer ejemplo en HTML</title>
</head>
<body>
Sencillo, no? Cuerpo
<!-- Esto es un comentario -->
</body>
</html>


El cuerpo contiene el contenido de la pgina.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 26


Primer ejemplo en HTML

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 27


Estructurar contenido

Uno o ms saltos de lnea se consideran como
un nico espacio en blanco.

Dos o ms espacios en blanco se consideran
como uno solo.

Para estructurar el texto en prrafos, se utiliza
la etiqueta <p>.

<body>
<p>Sencillo, no?</p>
<p>Esto es otro parrafo</p>
</body>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 28


Caracteres especiales

Para introducir un carcter especial
(incluyendo tildes), se utilizan las entidades
HTML, precedidas por (&) y acabadas en (;)

< >
&aacute; &eacute; &iacute; &oacute; &uacute; &ntilde; &lt; &gt;

<body>
<p>Sencillo, no?</p>
<p>Esto es otro p&aacute;rrafo</p>
</body>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 29


Encabezados

Desde <h1> </h1> hasta <h6> </h6>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 30


Resaltado de fragmentos de texto

Se realiza mediante <strong> y <em>.
<body>
<p>La estructura y el contenido de un documento se
define mediante <strong>HTML</strong>, que
agrupa el contenido del texto en <em>etiquetas</em>.</p>
</body>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 31


Hiperenlaces

Se insertan mediante la etiqueta <a>.

<a href=direccion destino>Texto del enlace</a>

<body>
<p>Haga click <a href=http://www.google.com>aqu&iacute;</a>
para ir al buscador</p>
<p>Mediante <a href=Ej1.html>este enlace</a>
se salta al archivo Ej1.html contenido en el mismo
directorio que &eacute;ste</p>
</body>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 32


Imgenes

<img src=url imagen></img>

<img src=url imagen/>


Se permiten los formatos JPEG, GIF y PNG.

<body>
<p>Logotipo de la universidad</p>
<p><img src="logoucm.jpg"/></p>
</body>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 33


Listas numeradas y no numeradas

<ul>
<li>Elemento</li>
<li>Otro elemento</li>
<li>Y otro m&aacute;s</li>
</ul>

<ol>
<li>Elemento</li>
<li>Otro elemento</li>
<li>Y otro m&aacute;s</li>
</ol>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 34


Tablas
<table>
<tr> Fila
<th>Nombre</th>
<th>Apellidos</th> Celda de cabecera
<th>Fecha de Nacimiento</th>
</tr>
<tr>
<td>Ignacio</td> Celda
<td>Domingo Villanueva</td>
<td>28-08-1970</td>
</tr>
<tr>
<td>Luis</td>
<td>Cid Gallego</td>
<td>20-10-1975</td>
</tr>
</table>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 35


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 36


Hojas de estilo en cascada

HTML tiene etiquetas para definir el aspecto de los
elementos de la pgina, pero su uso est desaconsejado.

CSS (Cascading Style Sheets) es un lenguaje utilizado para
definir la presentacin de un documento, mediante hojas
de estilo.

Las hojas de estilo se definen en un documento distinto
al HTML, y se referencian desde este ltimo.

Se pueden referenciar varias hojas de estilo desde un
nico HTML, y hacer que tengan efecto segn el
dispositivo en el que se visualiza el documento.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 37


Ejemplo

Fuente: http://es.wikipedia.org/wiki/HTML

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 38


Ejemplo

Una hoja de estilo CSS est formada por una
serie de bloques de la siguientes forma:
etiqueta {
atributo1: valor1;
atributo2: valor2;

atributon: valorn;
}

Lista de atributos:

http://www.w3schools.com/css/default.asp

http://www.w3.org/Style/CSS/

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 39


Ejemplo
body {
font-family: sans-serif; Tipo de letra
background-color: #E0FFE0; Color de fondo verde claro
}
h1 { Color de fondo verde
background-color: #0AFF0A; Justificacin a la derecha
text-align:right;
padding:8px; Mrgenes interiores
color: #006000; Color de texto
}
em { No utilizar cursiva
font-style: normal; Color verde
color: #00A000;
}
p {
text-align:justify; Justificacin a mrgenes
margin-left:20px; Mrgenes de 20 pxeles
margin-right:20px;
}
a {
color: #A0A000; Enlaces de color amarillo
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 40


Ejemplo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 41


Enlaces a hojas de estilo

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>Ejemplo con hojas de estilo</title>
<link rel="stylesheet" href="Ej5.css" type="text/css"/>
</head>
<body>

</body>
</html>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 42


Clases de elementos

Se pueden definir clases en los elementos
HTML, y aplicar un determinado estilo a los
elementos de esa clase.
etiqueta.clase {
atributo1: valor1;
atributo2: valor2;

atributon: valorn;
}

<etiqueta class=clase>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 43


Clases de elementos
...
p.inicial {
border: 2px dashed green;
margin-left: 50px;
padding: 13px;
font-style: italic;
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 44


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 45


Interactividad en pginas web

El lenguaje de marcador HTML, por s solo, no
tiene etiquetas para generar contenido
dinmicamente.

Aunque proporciona etiquetas para manejo de
formularios, el lenguaje no puede procesar la
informacin introducida por el usuario.

Se enva al servidor, y ste la interpreta y procesa.

Para crear pginas web de contenido no
esttico, hay que complementar HTML con
lenguajes y tecnologas adicionales.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 46


Tecnologas Web

Servidor web Cliente

Protocolo HTTP
80

PHP Javascript
ASP Actionscript / Flash
Servlets / JSP Applets Java

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 47


Applets de Java

Los applets son aplicaciones Java integradas
en el contenido de una pgina web.

Requieren un aadido (plug-in) en en
navegador para ejecutar applets.

Con respecto a las aplicaciones autnomas, los
applets tienen ciertas restricciones de
seguridad.

Por ejemplo, no pueden acceder a los ficheros del
cliente.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 48


Creacin de applets

Para crear un applet hay que extender la clase
JApplet.

La clase utiliza unos mtodos que pueden ser
reescritos en la subclase.
public void init()
public void start()
public void stop()
public void destroy()

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 49


Ejemplo
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class AppletSaludo extends JApplet implements ActionListener {
public JTextField texto;
public void init() {
JPanel p = new JPanel();
texto = new JTextField(10);
p.setLayout(new FlowLayout());
p.add(new JLabel("Nombre:"));
p.add(texto);
JButton b = new JButton("Saludar");
b.addActionListener(this);
p.add(b);
Container content = getContentPane();
content.setLayout(new BorderLayout());
content.add(p);
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hola " + texto.getText() + "!");
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 50


Ejemplo

Incrustar applets en pginas web: Etiqueta
<applet>
<p>A continuaci&oacute;n se mostrar&aacute;
el applet <em>AppletSaludo</em></p>
<applet code="AppletSaludo" width="300" height="40"/>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 51


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 52


Servicios web

Un servicio web es una aplicacin que
proporciona una funcionalidad a travs del
protocolo HTTP.

Un ejemplo de ello son las aplicaciones web a
las que accedemos a travs de los navegadores
web.

Generalmente, el trmino servicios web hace
referencia al acceso a estas aplicaciones desde
un programa que no sea un navegador web.

y que, a veces, no tiene interfaz grfica.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 53


Servicios web

Los servicios web fomentan el desarrollo de
aplicaciones distribuidas, posiblemente
escritas en lenguajes distintos.

interoperabilidad

Los datos se transmiten en lenguaje XML.

Servidor web Cliente

Protocolo HTTP (leng. XML)


80

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 54


Lenguaje XML

XML Extensible Markup Language.

Generalizacin/simplificacin de HTML.

Desarrollado para el intercambio de datos
entre aplicaciones.
<persona dni=74612153V>
<nombre>Alfonso</nombre>
<apellidos>Prez Fernndez</apellidos>
<fecha-nacimiento>
<dia>26</dia>
<mes>3</mes>
<ao>1974</ao>
</fecha-nacimiento>
</persona>

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 55


Ejemplo de servicio web

Servicio web que devuelve el da actual.

Interfaz:
package fecha;

public interface ServidorFecha {


Fecha getFechaHoy();
String getCadenaFecha();
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 56


Ejemplo de servicio web

Servicio web que devuelve el da actual.

Interfaz (SEI Service Endpoint Interface)
package fecha;
import javax.jws.*; Paquete donde estn definidas
las anotaciones

@WebService
public interface ServidorFecha {
@WebMethod Fecha getFechaHoy();
@WebMethod String getCadenaFecha();
}
Anotaciones

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 57


Ejemplo de servicio web

Servicio web que devuelve el da actual.

Implementacin (SIB Service Implementation Bean):
package fecha;
import java.util.*;
import javax.jws.*;

Nombre de
@WebService(endpointInterface = "fecha.ServidorFecha")
public class ServidorFechaImpl implements ServidorFecha { la interfaz
public Fecha getFechaHoy() {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(new Date());
return new Fecha(gc.get(GregorianCalendar.DAY_OF_MONTH),
gc.get(GregorianCalendar.MONTH) + 1,
gc.get(GregorianCalendar.YEAR));
}
public String getCadenaFecha() { return getFechaHoy().toString(); }
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 58


La utilidad wsgen

Genera artefactos que sirven para la
publicacin de la clase como servicio web.

En el directorio que contiene el paquete fecha,
teclear lo siguiente desde una terminal:
wsgen -cp . fecha.ServidorFechaImpl

Classpath de
Nombre de la
Java. Directorio
clase que implementa
donde se encuentra
el servicio web (SIB)
el paquete raz

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 59


La utilidad wsgen

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 60


Publicar el servicio web

Existe software especfico para la publicacin
de servicios web:

BEA WebLogic

JBoss

GlassFish

WebSphere



En entornos de desarrollo, se suele crear una
pequea clase Java que publique el servicio.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 61


Publicar el servicio web
package fecha;
import javax.xml.ws.Endpoint;

class ServicioFechaPublisher {
public static void main(String[ ] args) {
Endpoint.publish("http://localhost:8888/fecha", new ServidorFechaImpl());
System.out.println("Servicio web publicado correctamente.");
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 62


Publicar el servicio web
package fecha;
import javax.xml.ws.Endpoint;

class ServicioFechaPublisher { URL de publicacin Instancia del SIB


public static void main(String[ ] args) {
Endpoint.publish("http://localhost:8888/fecha", new ServidorFechaImpl());
System.out.println("Servicio web publicado correctamente.");
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 63


WSDL

WSDL Web Services Description Language

Archivo en formato XML que describe la
interfaz pblica a los servicios web.

Define las operaciones que ofrece el servicio
web, as como el tipo de los parmetros y valor
de retorno de cada una de ellas.

Puede ser accedido a partir de la direccin
http://localhost:8888/fecha?wsdl

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 64


WSDL

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 65


Cliente del servicio web

La utilidad wsimport genera automticamente
las clases necesarias para desarrollar clientes
de un servicio web, a partir de la descripcin
WSDL del mismo.
Mantener los .java
de las clases
generadsa

wsimport -p fecha_client -keep http://localhost:8888/fecha?wsdl

Nombre del paquete


URL del archivo
donde guardar
WSDL
las clases creadas

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 66


Cliente del servicio web

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 67


Cliente del servicio web
import fecha_client.*;

public class ClienteFecha {


public static void main(String[] args) {
ServidorFechaImplService servicio = new ServidorFechaImplService();
ServidorFecha sf = servicio.getServidorFechaImplPort();
System.out.println(sf.getCadenaFecha());
Fecha f = sf.getFechaHoy();
System.out.println("Ao: " + f.getAo());
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 68


Servicio de tiempo meteorolgico

Informacin en:
http://www.webservicex.net/ws/WSDetails.aspx?WSID=56&CATID=12


Sirve para obtener la temperatura en una
ciudad del mundo determinada.

Mtodos del servicio:
String getCitiesByCountry(String country)
String getWeather(String city, String country)

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 69


Acceso al WSDL

Generamos los artefactos Java:
wsimport -p tiempo -keep -extension
http://www.webservicex.net/globalweather.asmx?WSDL

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 70


Desarrollo del cliente
import tiempo.*;

public class TiempoClient {


public static void main(String[] args) {
GlobalWeather servicio = new GlobalWeather();
GlobalWeatherSoap gw = servicio.getGlobalWeatherSoap();
String cad = gw.getCitiesByCountry("Spain");
System.out.println(cad);
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 71


Desarrollo del cliente

Formato XML

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 72


Intrpretes XML

Cmo extraer la informacin deseada a partir
de un documento XML?

Dos posibilidades:
1) Extraccin mediante expresiones regulares.
2) Extraccin mediante las libreras de Java para el
manejo de XML: JAXP

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 73


Mtodo 1 Expresiones regulares
import tiempo.*;
import java.util.regex.*;

public class TiempoClientRegEx {


public static void main(String[] args) {
GlobalWeather servicio = new GlobalWeather();
GlobalWeatherSoap gw = servicio.getGlobalWeatherSoap();
String ciudades = gw.getCitiesByCountry("Spain");
Pattern pat = Pattern.compile("<City>(.*)</City>");
Matcher m = pat.matcher(ciudades);
while(m.find()) {
System.out.println(m.group(1));
}
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 74


Mtodo 2 - JAXP

NewDataSet

Table Table Table

Country City Country City Country City

Vitoria Vigo/Peinador Sevilla / San Pablo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 75


Mtodo 2 JAXP
import tiempo.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class TiempoClientJAXP {


public static void main(String[] args) throws Exception {
GlobalWeather servicio = new GlobalWeather();
GlobalWeatherSoap gw = servicio.getGlobalWeatherSoap();
String ciudades = gw.getCitiesByCountry("Spain");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document documento = db.parse(new ByteArrayInputStream(ciudades.getBytes()));
NodeList elems = documento.getElementsByTagName("City");
for (int i = 0; i < elems.getLength(); i++) {
System.out.println(elems.item(i).getFirstChild().getNodeValue());
}
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 76


Mtodo 2 - JAXP
documento.getElementsByTagName("City");
NewDataSet

Table Table Table

Country City Country City Country City

Vitoria Vigo/Peinador Sevilla / San Pablo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 77


Mtodo 2 - JAXP
elems.item(1)
NewDataSet

Table Table Table

Country City Country City Country City

Vitoria Vigo/Peinador Sevilla / San Pablo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 78


Mtodo 2 - JAXP
elems.item(1).firstChild()
NewDataSet

Table Table Table

Country City Country City Country City

Vitoria Vigo/Peinador Sevilla / San Pablo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 79


Mtodo 2 - JAXP
elems.item(1).firstChild().getNodeValue()
NewDataSet

Table Table Table

Country City Country City Country City

Vitoria Vigo/Peinador Sevilla / San Pablo

Vigo/Peinador

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 80


Contenidos

Clientes, servidores y puertos.

Comunicacin mediante sockets.

Tecnologas web

HTML

CSS

Applets

Servicios web

SOAP: intercambio de datos

Web scraping

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 81


Web scraping

Poor man's web service.

Extraccin automtica de datos a partir de una
pgina web en formato HTML.

Se utiliza en aquellos casos donde el
proveedor de informacin no proporciona un
servicio de acceso a la misma.

La informacin deseada suele obtenerse
mediante ajustes de expresiones regulares.

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 82


Ejemplo

Acceso a lneas de EMT

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 83


Ejemplo

Acceso a lneas de EMT
import java.net.*;
import java.util.*;
import java.util.regex.*;

public class LineasEMT {


public static void main(String[] args) throws Exception {
URL url = new URL("https://www.emtmadrid.es");
URLConnection con = url.openConnection();
Scanner sc = new Scanner(con.getInputStream());
Pattern p = Pattern.compile("<option value=\"[^\"]*\" linea=\"[^\"]*\" +
title=\"[^\"]*\">(.*)</option>");
while(sc.hasNextLine()) {
String linea = sc.nextLine();
Matcher m = p.matcher(linea);
if (m.find()) { System.out.println(m.group(1)); }
}
}
}

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 84


Ejemplo

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 85


Referencias

P. Deitel, H. Deitel
Java. How to Program (9th Edition)
Cap. 23, 27

M. Kalin
Java web services: up and running
O'Reilly Media


http://www.w3schools.com/html/

http://www.w3schools.com/css/

31 Mayo-1 Junio, 2012 11. Introduccin a las tecnologas web 86

Anda mungkin juga menyukai