Generar WML desde un Servlet

Técnicamente, el modelo de operación cliente/servidor de WAP es muy similar al utilizado en el WWW, y de hecho este ha sido diseñado para que sea posible aprovechar la infraestructura tecnológica existente en la Web para el aporte de contenidos.

Por tanto, esto significa que en el desarrollo de nuestras aplicaciones WAP podremos utilizar las aplicaciones y tecnologías que hasta el momento venimos utilizando en el desarrollo de nuestras aplicaciones Web: CGIs, ASP, PHP, Perl, Servlets, JSP, etc.

Sin duda alguna, una de las más idoneas y utilizadas es la plataforma Java, y en concreto la utilización de servlets y JSP.

En este artículo explicaremos como generar de forma dinámica nuestras páginas WML desde un servlet y veremos que sus diferencias con las generación de páginas HTML es mínima.

Página WML que generaremos

Este es el código de la página WML que generaremos:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC 
              "-//WAPFORUM//DTD WML1.1//EN" 
              "http://www.wapforum.org/DTD/wml1.1.xml">
<wml>
<card id="cardpre" title="presentacion">
<p align="center"><b>Java en castellano</b></p>
<p align="center"><small>http://java.programacion.net</small></p>
<p align="center">Ejemplo generado desde un servlet</p>
</card>
</wml>
	

Que visto en el emulador WML de Nokía, presenta el siguiente aspecto:

Imagen del movil

No es el objetivo de este artículo, pero brevemente acerca del WML diremos que:

  • Que es una aplicación XML, y como tal los documentos WML podemos editarlos, validarlos y manipularlos utilizando las herramientas que normalmente utilizamos en XML.
  • Una página WML se denomina deck(baraja) y se subdivide en cards(cartas), de manera que podemos movernos por varias cards dentro de un mismo deck. En nuestro ejemplo solo tenemos un card.

Servlet que genera el código anterior

Este es el código que genera la página WML anterior

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class WMLservlet extends HttpServlet{

 public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
  }

  public void service (HttpServletRequest req, 
                       HttpServletResponse res) throws
                       ServletException, IOException
  {

 PrintWriter f = res.getWriter();
 res.setContentType("text/vnd.wap.wml");
 f.println("<?xml version="1.0"?>");
 f.println("<!DOCTYPE wml 
              PUBLIC "-//WAPFORUM//DTD WML1.1//EN"
              "http://www.wapforum.org/DTD/wml1.1.xml">"); 
 f.println("<wml>");
 f.println("<card id="cardpre" title="presentacion">");
 f.println("<p align="center"><b>Java en castellano</b></p>");
 f.println("<p align="center">
               <small>http://java.programacion.net</small></p>");
 f.println("<p align="center">Ejemplo generado desde un servlet</p>");
 f.println("</card>");
 f.println("</wml>");
 
 f.close();

  } 
}

Como podemos observar, es un servlet típico. La única diferencia con uno que genere HTML es lo que tenemos que poner en el método setContentType del objeto HttpServletResponse. En este caso tenemos que indicar que lo que vamos a enviar va a ser una página WML y esto lo indicamos con la siguiente expresión:

res.setContentType("text/vnd.wap.wml");

Aplicaciones utilizadas en el ejemplo

Este ejemplo ha sido desarrollado y probado con las siguientes aplicaciones.

  • El emulador de Nokia para visualizar la página WML generada.
  • El JSWDK-1.0.1 de Sun para poder ejecutar el servlet en mi máquina.
  • El parser XML de IBM para verificar que el documento WML que ibamos a generar desde el servlet era correcto.

Direcciones de interes

Estas son algunas direcciones interesantes relacionadas con el tema:

WML y WAP

Java y Servlets

  • Java en castellano
  • Tutorial de Servlets en Java en castellano.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO