Suscribirse al Feed
02Mar

[código] Manipulación de URLs en Java

Introduciendonos de manera breve al tema de redes en Java, veamos un pequeño ejemplo de manipulación de URLs desde los Applets. Si se utiliza una URL que haga referencia a una página Web en concreto como un argumento para el método showDocument de la interfaz AppletContext, el navegador en el que se ejecuta el Applet mostrará el recurso URL especificado.

Además, en el Applet que desarrollaremos más adelante, se utilizará una forma de paso de parametros, especificados dentro del documento HTML que invoca al Applet. Esto es muy útil puesto que permite a los Applets ser más dinámicos, y nos ofrece posibilidades para crear RIAs básicas.

El resultado...

Imagen programa

El código...

Veamos el archivo HTML que invocará el Applet, y nota cómo se declaran parámetros que serán utilizados desde el programa:


<html>
<title>Selector de sitios</title>
<body>
   <applet code = "SelectorSitios.class" width = "300" height = "100">
      <param name = "titulo0" value = "UbuntuLife">
      <param name = "ubicacion0" value = "http://ubuntulife.net/">
      <param name = "titulo1" value = "El blog de Casidiablo">
      <param name = "ubicacion1" value = "http://casidiablo.net/">
      <param name = "titulo3" value = "elhacker.net">
      <param name = "ubicacion3" value = "http://www.elhacker.net/">
      <param name = "titulo4" value = "hac.kers">
      <param name = "ubicacion4" value = "http://hac.kers.net/">
      <param name = "titulo5" value = "NPC">
      <param name = "ubicacion5" value = "http://nopuedocreer.com/">
      <param name = "titulo7" value = "Malaciencia">
      <param name = "ubicacion7" value = "http://malaciencia.info/">
   </applet>
</body>
</html>

El documento HTML posee 12 etiquetas param; éstas deben estar siempre entre las etiquetas de apertura y de cierre del Appelt. El Applet puede leer estos valores y utilizarlos dentro del programa Java. Cada etiqueta param posee dos datos: un nombre y un valor. El método getParameter de Applet recupera el valor asociado con un nombre específico, y devuelve el valor como una cadena. El argumento que se le pasa a getParameter es el nombre del parámetro que se quiera recuperar. En este caso los parametros contienen información del nombre y URL de ciertos sitios web que el usuario puede seleccionar del JList.

El siguiente Applet (SelectorSitios.java) usa los métodos mencionados, y a partir de los datos obtenifos genera un objeto JList en donde el usuario puede seleccionar una página Web. La clase SelectorSitios utiliza un objeto HashMap (paquete java.util), para almacenar los nombres y URL de los sitios (un objeto HashMap almacena pares clave/valor):


// Este programa utiliza un botón para cargar un documento a partir de un URL.
import java.net.*;
import java.util.*;
import java.awt.*;
import java.applet.AppletContext;
import javax.swing.*;
import javax.swing.event.*;
public class SelectorSitios extends JApplet
{
   private HashMap sitios;    // nombres y URLs de los sitios
   private Vector nombresSitios;   // nombres de los sitios
   private JList selectorSitios;  // lista de sitios a elegir
   // leer parámetros de HTML y configurar GUI
   public void init()
   {
      // crear HashMap y Vector
      sitios = new HashMap();
      nombresSitios = new Vector();
      // obtener los parámetros del documento HTML
      obtenerSitiosDeParametrosHTML();
      // crear componentes de GUI y preparar distribución de la interfaz
      Container contenedor = getContentPane();
      contenedor.add( new JLabel( "Seleccione un sitio para navegar" ),
         BorderLayout.NORTH );
      selectorSitios = new JList( nombresSitios );
      selectorSitios.addListSelectionListener(
         new ListSelectionListener() {
            // ir al sitio que seleccionó el usuario
            public void valueChanged( ListSelectionEvent evento )
            {
               // obtener nombre del sitio seleccionado
               Object objeto = selectorSitios.getSelectedValue();
               // usar nombre del sitio para localizar URL correspondiente
               URL nuevoDocumento = ( URL ) sitios.get( objeto );
               // obtener referencia al contenedor de subprogramas
               AppletContext navegador = getAppletContext();
               // indicar al contenedor de subprogramas para cambiar de página
               navegador.showDocument( nuevoDocumento );
            }
         } // fin de la clase interna
      ); // fin de la llamada a addListSelectionListener
      contenedor.add( new JScrollPane( selectorSitios ),
         BorderLayout.CENTER );
   } // fin del método init
   // obtener parámetros del documento HTML
   private void obtenerSitiosDeParametrosHTML()
   {
      // buscar parámetros del subprograma en documento HTML y agregarlos a HashMap
      String titulo, ubicacion;
      URL url;
      int contador = 0;
      titulo = getParameter( "titulo" + contador ); // obtener título del primer sitio
      // iterar hasta que no haya más parámetros en el documento HTML
      while ( titulo != null ) {
         // obtener ubicación del sitio
         ubicacion = getParameter( "ubicacion" + contador );
         // colocar titulo/URL en HashMap y titulo en Vector
         try {
            url = new URL( ubicacion ); // convertir ubicacion a URL
            sitios.put( titulo, url );   // colocar titulo/URL en HashMap
            nombresSitios.add( titulo );    // colocar titulo en Vector
         }
         // procesar formato incorrecto de URL
         catch ( MalformedURLException excepcionURL ) {
            excepcionURL.printStackTrace();
         }
         ++contador;
         titulo = getParameter( "titulo" + contador ); // obtener título del siguiente sitio
      } // fin de instrucción while
   } // fin del método obtenerSitiosDeParametrosHTML
} // fin de la clase SelectorSitios

Descargar código fuente

Etiquetas: ,
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.

2 Comentarios para “[código] Manipulación de URLs en Java”

 

 

Antes de comentar... recuerda que no hago tareas

Te invito a subscribirte al feed RSS. ¿No sabes que es un lector de Feeds?

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS