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 <span id="IL_AD12" class="IL_AD">name</span> = "titulo0" value = "UbuntuLife">
      <param name = "ubicacion0" value = "http://ubuntulife.net/">
      <param name = "titulo1" value = "El <span id="IL_AD3" class="IL_AD">blog</span> 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 estosvalores y utilizarlos dentro del programa Java. Cada etiqueta param posee dos datos: un nombre y un valor. El método getParameter de Applet recupera elvalor 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 delJList.

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 puedeseleccionar una página Web. La clase SelectorSitios utiliza un objeto HashMap (paquete java.util), para almacenar los nombres y URL de los sitios (un objetoHashMap almacena pares clave/valor):

// Este programa utiliza un botón para <span id="IL_AD9">cargar</span> 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 );
         // <span id="IL_AD10">colocar</span> 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
NAPSTER 2011
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s