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:
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: