CLASE URL
Transcript of CLASE URL
UNIVERSIDAD DE PANAMÁCENTRO REGIONAL UNIVERSITARIO DE VERAGUAS
FACULTAD INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓNLIC. EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y
EMPRESARIAL
PROGRAMACIÓN IV INF222
LABORATORIO #6
“Clase URL”
FACILITADOR
DIEGO SANTIMATEO
INTEGRANTES
CONCEPCION, JAIRO 9-724-1589
MONTES, DIOMEDES 9-723-640
II SEMESTRE2008
INDICE
Contenidos Pág.
Introducción..................................................................................................... 3
Objetivos......................................................................................................... 4
Descripción del Problema............................................................................... 5
Diagrama UML de Clases.............................................................................. 6
Estructura del programa (Uml) con la respectiva documentación de las Clases y métodos............................................................................................
7
Class Url: ................................................................... ........................... 7
Código Fuente................................................................................ 7
Class LeeWeb........................................................................................ 8
Código Fuente................................................................................ 8,9
Class ObtenerDatos.............................................................................. 10
Código Fuente................................................................................ 10,11,12
Class DespliegaArch............................................................................. 12
Código Fuente................................................................................ 13
Similitudes de los flujos.................................................................................. 14
Utilidad práctica de la clase URL.................................................................... 15
Resultados de la Ejecución de la Aplicación, Modo Gráfico para I/O............. 16-20
Experiencias individuales del laboratorio........................................................ 21
Clase URL 2 Concepción, Jairo – Montes, Diomedes
INTRODUCCION
La clase URL contiene contructores y métodos para la manipulación de URL
(Universal Resource Locator): un objeto o servicio en Internet.
Con el URL se identifica cualquier recurso accesible en la RED como por ejemplo;
una página web, un documento, una dirección de correo, imagen, vídeo, audio, texto,etc.
Normalmente una URL consta de:
Identificador del método de acceso.
Servidor que identifica la computadora que cuenta con el recurso
Nombre del recurso.
El formato general de un URL es: protocolo://servidor/directorio/archivo, dado
una dirección URL Podemos obtener datos desde de la RED, con un InputStream que modele
el comportamiento fundamental de un flujo de entrada.
Nuestra aplicación esta diseñada para leer un sitio Web y pasar su contenido
a un archivo de texto. De igual forma podemos añadir una etiqueta HTML al
sitio Web en cualquier parte del mismo sin afectar su contenido.
Con un explorador de Internet se puede visualizar el contenido del
archivo creado además del documento añadido.
Clase URL 3 Concepción, Jairo – Montes, Diomedes
OBJETIVOS
Identificar similitudes en el manejo de FLUJOS para captura desde teclado,
lectura de archivo de texto, lectura de un recurso de la web, despliegue en
consola.
Crear una aplicación Java que lea un documento HTML de la web, lo
despliegue en consola y lo grabe en un archivo de texto.
Clase URL 4 Concepción, Jairo – Montes, Diomedes
DESCRIPCIÓN DEL PROBLEMA
Este laboratorio se puede realizar en grupos de dos personas y trata de lo
siguiente:
Identificar similitudes en el manejo de FLUJOS para captura desde teclado,
lectura de archivo de texto, lectura de un recurso de la web, despliegue en
consola.
Crear una aplicación Java que lea un documento HTML de la web, lo
despliegue en consola de manera legible y lo grabe en un archivo de texto.
Mediante una clase nueva adicione al archivo de texto un párrafo HTML
(use las etiquetas adecuadas) creado por usted.
En esa clase nueva adicione un método que permita extraer el contenido
de una etiqueta y crear un archivo de texto con ese contenido. Revise si el
archivo se crea correctamente.
Con un explorador de Internet despliegue el contenido del archivo que
usted creó.
Clase URL 5 Concepción, Jairo – Montes, Diomedes
DIAGRAMA UML DE CLASES
Class Url
Objetos Clases
Acceso LeeWeb()ObtenerAcceso ObtenerDatos()Captura DespliegaArch()
Main()
Class LeeWeb
String inputText;BufferedReader pag;String OpenUrl;Int cant;
BufferedReader leeURL()String ObtieneURL()Void EscribirUrl()Int Getcant()
Class ObtenerDatos
No tiene
Void GetParrafo(String eti)Void AñadirParrafo(String Id,String parrafo,int cantpar)
Class DespliegaArch
String Url;String Id;String Parrafo;Parrafo Eti;
PrinterArch() PrinterArch(String inputText) GetId() GetParrafo() GetEtiqueta()
ESTRUCTURA DEL PROGRAMA (UML) CON LA RESPECTIVA DOCUMENTACIÓN DE LAS CLASES
Class Url:
Código Fuente de la clase
import java.io.*;import java.net.*;import javax.swing.*;import java.lang.*;
class Url {
public static void main(String args[]) throws IOException {
DespliegaArch Captura = new DespliegaArch();
ObtenerDatos ObtenerAcceso = new ObtenerDatos();
LeeWeb acceso = new LeeWeb(Captura.PrinterArch());
System.out.println("**** Leyendo archivo de la web ...espere por favor ....");
Captura.PrinterArch(acceso.ObtieneURL());
acceso.EscribirUrl();
ObtenerAcceso.AñadirParrafo(Captura.GetId(), Captura.GetParrafo(),acceso.Getcant());
ObtenerAcceso.GetParrafo(Captura.GetEtiqueta());
}
} // fin del main
Class LeeWeb:
Class UrlObjetos Descripción - Funcionamiento
Nombre Clases
Captura DespliegaArch()Objeto de la clase DespliegaArch() que se encarga de capturar los datos que se van a utilizar en el programa
ObtenerAcceso ObtenerDatos()Objeto de la clase ObtenerDatos() que se encarga de Añadir y extraer el contenido del archivo.
acceso LeeWeb()Objeto de la clase LeeWeb() que se encarga de lee un archivo URL y lo escribe en otro archivo.
Métodos Descripción - Funcionamiento
Main() voidSe encarga de la ejecución del programa, llama a los métodos de las demás clases.
Class LeeWebVariables de la Clase Descripción - Funcionamiento
Nombre Tipo
inputText StringAlmacena los datos que se leyeron en el archivo
pag BufferedReader
OpenUrl String Almacena la dirección del Url que se desea leer
cant intCuenta y almacena la cantidad de párrafos que existen en el archivo leído.
Métodos Descripción - Funcionamiento
LeeURL() BufferedReaderMétodo privado que se conecta y usa un URL para obtener el recurso correspondiente.
ObtieneURL() StringMétodo publico que realiza la lectura del documento URL para luego devolver todos los datos leidos.
EscribirUrl() voidMétodo publico que se encarga de realizar la escritura en un nuevo archivo, los datos obtenidos en el url
Getcant() Int Método publico que se encarga de contar la cantidad de párrafos que contiene el Url.
Código Fuente de la clase
Clase URL 8 Concepción, Jairo – Montes, Diomedes
import java.io.*;import java.net.*;import java.lang.*;class LeeWeb {
private String inputText ="";private BufferedReader pag;private String OpenUrl;private BufferedReader web;private int cant;
public LeeWeb(String Url) { this.OpenUrl = Url; } //constructor LeeWeb
private BufferedReader LeeURL() throws IOException{
URL recurso = new URL(OpenUrl); URLConnection recursoWeb = recurso.openConnection(); InputStream is = recursoWeb.getInputStream(); InputStreamReader isr = new InputStreamReader(is);
this.pag = new BufferedReader(isr); return(this.pag);
}//fin del metodo LeeURL
public String ObtieneURL() throws IOException {
LeeURL(); String inputLine=""; System.out.flush(); // obliga al despliegue inmediato
try { while ((inputLine = pag.readLine()) != null){
inputText += inputLine + "\n";
if(inputLine.indexOf("<P>")!=-1){ cant++; } }
pag.close();
}catch (MalformedURLException me) { System.out.println("MalformedURLException: " + me); } catch (IOException ioe) { System.out.println("IOException: " + ioe); }
return(this.inputText);
} // fin del metodo LeeURL
public int Getcant(){ return(this.cant); }
} // fin de LeeWeb
public void EscribirUrl() throws IOException {
try{ String s;
BufferedReader leer = new BufferedReader(new StringReader(ObtieneURL())); PrintWriter escribir = new PrintWriter(new BufferedWriter(new FileWriter("Prueba.html")));
while ((s = leer.readLine()) != null){ escribir.println(s);
} leer.close(); escribir.close();
} catch (IOException ioe) { System.out.println("Final de la lectura"); }
}//fin de metodo EscribirUrl
Class ObtenerDatos:
Class ObtenerDatosVariables de la Clase Descripción - Funcionamiento
Nombre Tipo
------------- ------------ ------------------------------------------------
Métodos Descripción - Funcionamiento
GetParrafo(String eti) void
Método publico que se encarga de obtener el contenido de cualquiera etiqueta html, utiliza como argumento la variable eti que contiene la etiqueta que se desea obtener el contenido.
AñadirParrafo(String Id,String parrafo,int cantpar) void
Método publico que se encarga de añadir un párrafo en el archivo con su respectivo Id,Que utiliza como argumento la variable id que contiene el identificador del párrafo, la variable parrafo que contiene el parrafo que se desea añadir y la variable cantpar que contiene el numero donde se desea añadir el párrafo
Código Fuente de la clase
import java.io.*;import java.net.*;import javax.swing.*;
class ObtenerDatos {
public ObtenerDatos() {
} //constructor LeeWeb
Clase URL 9 Concepción, Jairo – Montes, Diomedes
public void GetParrafo(String eti)throws IOException{
String s; int sw=1; try{
FileReader arch1 = new FileReader("DatosUrl.html");BufferedReader leer = new BufferedReader(arch1);
PrintWriter escribir = new PrintWriter(new BufferedWriter(new FileWriter("Extraccion.txt")));
while ((s = leer.readLine()) != null){ if(s.indexOf("<"+eti+">")!=-1){ if(s.indexOf("</"+eti+">")!=-1){ escribir.println(s); } else{ sw=0; } } if(sw==0){ escribir.println(s); if(s.indexOf("</"+eti+">")!=-1){ sw=1; } }
} leer.close();
escribir.close();
} catch (Exception e) { e.printStackTrace(); }
}//fin del metodo LeeURL
public void AñadirParrafo(String Id,String parrafo,int cantpar) throws IOException {
int cant=0; String s; String nuPar = JOptionPane.showInputDialog(null,"La cantidad de parrafo que contiene el archivo es de "+cantpar+"\n En que numero de parrafo desea incluir "); int numPar=Integer.parseInt(nuPar); try{
FileReader arch1 = new FileReader("Prueba.html"); BufferedReader in = new BufferedReader(arch1);
File salida = new File("DatosUrl.html"); //archivo de salida PrintWriter ar = new PrintWriter(salida);
while ((s = in.readLine()) != null){ if(cantpar>0){ if(s.indexOf("<P>")!=-1){ cant++; if(cant==numPar){ ar.println("<P id ="+Id+">"+parrafo+"</P>");
} } }else { ar.println("<P id ="+Id+">"+parrafo+"</P>"); } ar.println(s); }
in.close(); File fichero = new File("DatosUrl.html"); fichero.delete();
Clase URL 10 Concepción, Jairo – Montes, Diomedes
ar.close();
File f1 = new File("DatosUrl.html"); File f2 = new File("Prueba.html"); f1.renameTo(f2);
} catch (Exception e) { e.printStackTrace(); } } // fin del metodo AñadirParrafo
} // fin de LeeWeb
Class DespliegaArch:
Class DespliegaArchVariables de la Clase Descripción - Funcionamiento
Nombre Tipo
Url String Almacena la dirección del Url.
Id String Almacena el id del parrafo
Parrafo String Almacena el parrafo que se desea añadir
Eti String Almacena la etiqueta que se desea obtener
Métodos Descripción - Funcionamiento
PrinterArch() StringMétodo publico que se encarga de capturar la dirección Url.
PrinterArch(String inputText) void
Método publico que se encarga de desplegar en consola el Url.
GetId() StringMétodo publico que se encarga de obtener el id del parrafo.
GetParrafo() StringMétodo publico que se encarga de capturar el párrafo que se desea añadir al archivo.
GetEtiqueta() StringMétodo publico que se encarga de capturar la etiqueta a la cual se desea obtener el contenido.
Código Fuente de la claseClase URL 11 Concepción, Jairo – Montes, Diomedes
SIMILITUDES DE LOS FLUJOS
En el manejo de FLUJOS en Java existen diversas similitudes las cuales
desglosaremos a continuación:
En los flujos para la lectura de un recurso de la Web existe una clase de nombre
InputStreamReader, la cual tiene similitudes con los flujos para captura desde el
teclado. De igual forma la clase BufferedReader aparece en los flujos para la lectura de
una Web, la lectura de un archivo y para el despliegue en consola, existiendo en estos
flujos similitudes entre ellos.
En la mayoría de los casos de flujos se observa la clase BufferedReader a
excepción de la lectura desde el teclado y en los flujos para pasar datos a un archivo de
texto, en donde se utiliza la clase BufferedWriter u otras las cuales son para escribir en
un archivo.
Consideramos que los flujos FileReader y FileWriter también son similares, con
la diferencia que uno es para leer y el otro para escribir.
Clase URL 12 Concepción, Jairo – Montes, Diomedes
import java.io.*;import java.net.*;import javax.swing.*;class DespliegaArch {
private String Url; private String Id; private String Parrafo; private String Eti;
public DespliegaArch() {} //constructor DespliegaArch
public String PrinterArch() { Url = "http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_5.htm"; return(this.Url); }
public void PrinterArch(String inputText) {
System.out.println(inputText); //despliegue del documento HTML en consola System.out.println("\n**** Fin de la lectura de la web"); }
public String GetId() { Id = JOptionPane.showInputDialog(null," Introduzca el Id del parrafo "); return(this.Id); }
public String GetParrafo() { Parrafo = JOptionPane.showInputDialog(null,"Introduzca el parrafo"); return(this.Parrafo); }
public String GetEtiqueta() { Eti = JOptionPane.showInputDialog(null,"Introduzca la etiqueta que desea extraer el contenido"); return(this.Eti); }
} // fin de DespliegaArch
UTILIDAD PRÁCTICA DE LA CLASE URL
Mediante la clase URL se puede identificar cualquier recurso accesible
en la RED como por ejemplo: una página web, una dirección de correo, etc.
Un ejemplo práctico es el que aplicamos en nuestro trabajo, en donde
leemos un sitio web y pasamos su contenido a un archivo de texto. De igual
forma podemos añadir un documento HTML al sitio web en cualquier parte del
mismo sin afectar su contenido.
Clase URL 13 Concepción, Jairo – Montes, Diomedes
Con un explorador de Internet se puede visualizar el contenido del
archivo creado además del documento añadido. Esto sería una práctica muy
útil a utilizar la clase URL.
Resultados de la Ejecución de la Aplicación
En esta pantalla se muestra en consola un mensaje de espera, se aplica para indicar que la aplicación esta trabajando en la lectura del documento procedente de la Web.
En esta pantalla vemos desplegado en consola todo el contenido HTML del documento que hemos leído de la web, de igual manera este contenido lo grabamos en un archivo html. Para este caso especifico accesamos al documento "http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_5.htm";
Clase URL 14 Concepción, Jairo – Montes, Diomedes
En esta pantalla mostramos el archivo html guardado.
Clase URL 15 Concepción, Jairo – Montes, Diomedes
En el siguiente paso procedemos a adicionar al archivo de texto un párrafo HTML, para esto solicitaremos que ingrese el ID del párrafo como se muestra a continuación en la siguiente pantalla:
Después de introducir el ID, se procede a capturar el contenido del párrafo; como se muestra a continuación
En la siguiente pantalla le ofrecemos al usuario la posibilidad de ingresar el párrafo donde el desee, para esto le indicamos la cantidad total de parrafos que contiene el archivo, y le solicitamos que ingrese después de que numero desea ingresar esta etiqueta. Para este caso lo insertaremos después del tercer (3) parrafo.
En las siguientes pantallas mostramos la etiqueta HTML que hemos introducido en el documento. Les presentamos una vista de la etiqueta introducida a través del código fuente del archivo y desde el explorador de Windows.
Código fuente del archivo:
Clase URL 16 Concepción, Jairo – Montes, Diomedes
Desde el Explorador de Windows
En la siguiente pantalla extraeremos el contenido del una etiqueta HTML, para luego guardarlas en un archivo de texto.
El usuario puede extraer la etiqueta deseada, para este caso extraeremos las etiquetas de párrafos (<p>), como se muestra a continuación:
Clase URL 17 Concepción, Jairo – Montes, Diomedes
. . .
En esta pantalla desplegamos en consola el contenido de todas las etiquetas de párrafos, que se encuentran en el documento.
En esta pantalla mostramos el archivo de texto con el contenido de todas las etiquetas de párrafos, que se encuentran en el documento.
Clase URL 18 Concepción, Jairo – Montes, Diomedes
En esta pantalla mostramos el archivo de texto guardado:
Clase URL 19 Concepción, Jairo – Montes, Diomedes
EXPERIENCIAS INDIVIDUALES
Diomedes Montes J
Este Laboratorio es de mucha importancia para mi ya que al igual que en anteriores
he adquirido nuevos conocimientos que se me seran de utiles en el desarrollo del curso,.
En esta he aprendido la utilidad y el uso de un localizador Uniforme de Recursos
(URL) con el cual podemos acceder a los diversos recursos de Internet, también sobre el
objeto URLConnection es cual es el encargado de establecer la conexión con la PC, asi
mismo sobre la utilidad del método getInputStream que proporciona un flujo para leer el
contenido de entrada.
Jairo Concepción
Este laboratorio era parecido al laboratorio de archivo, donde la única diferencia
estaba en el flujo para obtener el Url, presente un poco de dificultades en el manejo de
las etiquetas que me permitirían añadir o extraer algo del archivo Url . Estos laboratorios
me están ayudando a aclarar muchas dudas que tenia antes y espero que estos
conocimientos me ayudes más adelante el lo profesional.
Clase URL 20 Concepción, Jairo – Montes, Diomedes