<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE articulo SYSTEM "articulo.dtd">
<articulo id="wmlservlet">
<metainfo>
	<titulo>Generar WML desde un Servlet</titulo>
	<autor>
		<nombre>Joaquin Bravo Montero</nombre>
		<email>jbravo@retemail.es</email>
	</autor>
</metainfo>
<cuerpo>
	<titulo>Generar WML desde un Servlet</titulo>
	<para>Técnicamente, el modelo de operación cliente/servidor de <destacar>WAP</destacar> es muy similar al utilizado en el WWW, y de hecho este <destacar>ha sido diseñado para que sea posible aprovechar la infraestructura tecnológica existente en la Web para el aporte de contenidos</destacar>. </para>

	<para>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: <destacar>CGIs, ASP, PHP, Perl, Servlets, JSP</destacar>, etc.</para>

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

	<para>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.</para>

	<seccion id="wml-que-generamos">
	<titulo>Página WML que generaremos</titulo>
	<para>Este es el código de la página WML que generaremos:</para>
<codigo><![CDATA[
<?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>]]>
	</codigo>
	<para>Que visto en el emulador WML de Nokía, presenta el siguiente aspecto:</para>
	<imagen direccion="wmlservlet/movil1.jpg" descripcion="Imagen del movil"/>
	<para>No es el objetivo de este artículo, pero brevemente acerca del WML diremos que:</para>
	<lds>
		<il>Que es <destacar>una aplicación XML</destacar>, y como tal los documentos WML podemos editarlos, validarlos y manipularlos utilizando las herramientas que normalmente utilizamos en XML.</il>
		<il>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.</il>
	</lds>
	
	</seccion>

	<seccion id="servlet-que-lo-genera">
	<titulo>Servlet que genera el código anterior</titulo>
	<para>Este es el <enlace direccion="wmlservlet/WMLservlet.java" descripcion="Código del Servlet que genera WML">código</enlace> que genera la página WML anterior</para>
<codigo><![CDATA[
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();

  } 
}
]]>
</codigo>

	<para>Como podemos observar, <destacar>es un servlet típico</destacar>. La única diferencia con uno que genere HTML es lo que tenemos que poner en el método <destacar>setContentType</destacar> del objeto <destacar>HttpServletResponse</destacar>. 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:</para>
	<codigo><![CDATA[res.setContentType("text/vnd.wap.wml");]]></codigo> 
	</seccion>

	<seccion id="herramientas-utilizadas">
	<titulo>Aplicaciones utilizadas en el ejemplo</titulo>
	<para>Este ejemplo ha sido desarrollado y probado con las siguientes aplicaciones.</para>
	<lds>
	<il>El <enlace direccion="http://www.forum.nokia.com/main/1,6668,1_1,00.html" descripcion="Emulador WAP de Nokia">emulador de Nokia</enlace> para visualizar la página WML generada.</il>
	<il>El <enlace direccion="http://www.sun.com" descripcion="JSWDK-1.0.1 de Sun. Permite ejecutar Servlets y JSP.">JSWDK-1.0.1</enlace> de Sun para poder ejecutar el servlet en mi máquina.</il>
	<il>El <enlace direccion="http://alphaworks.ibm.com/formula/xml" descripcion="Parser XML de IBM">parser</enlace> XML de IBM para verificar que el documento WML que ibamos a generar desde el servlet era correcto.</il>
	</lds>
	</seccion>

	<seccion id="direcciones-de-interes">
	<titulo>Direcciones de interes</titulo>
	<para>Estas son algunas direcciones interesantes relacionadas con el tema:</para>
	<seccion1 id="direcciones-de-wml">
	<titulo>WML y WAP</titulo>
	<lds>
		<il>Tutorial de WML en <enlace direccion="http://www.wmlclub.com" descripcion="Página de WMLclub.">WMLclub</enlace></il>
		<il>Tutorial de WML en <enlace direccion="http://wapfacil.esgratis.net" descripcion="Página de WapFacil">WapFacil</enlace></il>
		<il><enlace direccion="http://www.egroups.com/group/wapes/" descripcion="Lista de correo sobre WAP en castellano">Lista</enlace> de sobre WAP en castellano</il>
	</lds>
	</seccion1>	
	<seccion1 id="direcciones-servlets">
	<titulo>Java y Servlets</titulo>
	<lds>
		<il><enlace direccion="http://java.programacion.net" descripcion="Web sobre programación en castellano.">Java</enlace> en castellano</il>
		<il>Tutorial de <enlace direccion="http://java.programacion.net/servlets0.html" descripcion="Tutorial de Servlets en programación en castellano">Servlets</enlace> en Java en castellano.</il>
	</lds>
	</seccion1>	
	</seccion>


</cuerpo>
</articulo>
