DESARROLLO DE SOLUCIONES
EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
DESARROLLO DE SOLUCIONES
EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
APLICACIONES WAP
Ing. Ronald Criollo
Qué es WML Tecnología WAP Lenguaje WML y WMLScript Lenguaje XHTML-MP Contenido dinámico con JAVA
AGENDA
AGENDA
WML son las siglas de Wireless Markup Language Es el lenguaje desarrollado para la implementación de
paginas Web en dispositivos con tecnología WAP. Presenta una sintaxis muy similar a HTML. En la actualidad presenta algunas limitantes en
comparación con otras versiones.
QUÉ ES WML?QUÉ ES WML?
Es un estándar internacional creado para aplicaciones que usan comunicación inalámbrica, la cual tiene como su principal característica la de brindar el acceso a Internet a través de un dispositivo móvil por medio de un navegador con soporte WAP
WAP es una serie de tecnologías que consisten en: WML, que es el lenguaje de etiquetas, WMLScript es un lenguaje de script, lo que vendría a ser JavaScript
TECNOLOGÍA WAPTECNOLOGÍA WAP
Presenta soporte para texto con formato. Soporta imágenes en formato WBMP. Imágenes en blanco y negro. Resolución y tamaño reducidas. Estructuración de una pagina WML en cartas. Soporta el manejo de variables. Es un lenguaje case – sensitive.
CARACTERISTICAS WMLCARACTERISTICAS WML
Un editor de texto para implementar el código WML Un emulador de un terminal WAP para poder cargar
las paginas WinWap Nokia Mobile Browser Simulator
Conversor de imágenes a formato WBMP Servidor para desplegar la aplicación desarrollada
en WML TOMCAT IIS
ENTORNO DE DESARROLLOENTORNO DE DESARROLLO
Baraja Se llama baraja a una pagina wml constituida por un
conjunto de cartasCarta Cada una de las subdivisiones que componen la
baraja El terminal WAP siempre carga la primera carta de la
baraja en la pantalla al comenzar Para navegar de una carta a otra es necesario el uso
de hipervínculos entre ellas
CONCEPTOS DE CARTA Y BARAJACONCEPTOS DE CARTA Y BARAJA
EJEMPLO DE NAVEGACION POR CARTASEJEMPLO DE NAVEGACION POR CARTAS
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml>
<card id=“carta1“ title=“Carta1”><p><strong>carta1</strong></p><do type="accept" label="Entrar">
<go href="#carta2"/></do><do type="accept" label="Salir">
<go href="#fin"/></do>
</card>
<card id="carta2" title=“Carta2"><p><strong>carta2</strong></p><do type="accept" label="volver">
<go href="#carta1"/></do>
</card>
<card id="fin" title=“Final"><p>Fin<br/>del ejemplo</p>
</card></wml>
WML permite la declaración y uso de variables Permite el paso de información entre cartas
El nombre de la variable puede empezar por: Guión bajo Letra US-ASCII seguida de mas letras o números
Declaración: <set var name=“nombre” value=“valor”>
Acceso: $(nombre)
DECLARACION Y USO DE VARIABLESDECLARACION Y USO DE VARIABLES
EJEMPLO EN EL USO DE VARIABLESEJEMPLO EN EL USO DE VARIABLES
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card id="carta1">
<p><input type="text" name="texto"/></p>
<do type="accept" label="Siguiente"> <go href="#carta2"/>
</do></card>
<card id="carta2"><p>El valor de la variable es $(texto) </p>
</card>
</wml>
ANIMACIONES E IMAGENES EN MOVIMIENTOANIMACIONES E IMAGENES EN MOVIMIENTO
WML permite la generación de secuencia de imágenes para simular el movimientos gracias al tag timer
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card id="im1" ontimer="#im2“ >
<timer value="5"/><img src="im1.wbmp" alt="imagen1"/>
</card><card id="im2" ontimer="#im3“ >
<timer value="5"/><img src="im2.wbmp" alt="imagen2"/>
</card><card id="im3" ontimer="#im1“ >
<timer value="5"/><img src="im3.wbmp" alt="imagen3"/>
</card></wml>
Lenguaje de Script soportado por terminales WAP con sintaxis similar a javaScript
Añade funcionalidad a las paginas WML
Mensajes de alerta y confirmaciónChequeo y validación de los datos
introducidos por el usuario
WMLSCRIPTWMLSCRIPT
Lang abs(n), max (n1,n2), min (n1,n2), isInt (s),
isFloat (s), parserInt(s),parserFloat(s),random().
LIBRERIAS WMLSCRIPTLIBRERIAS WMLSCRIPT
Float floor(n), ceil(n), pow (n1,n2), round (s).
String charAt(s,n), compare (s1,s2), length (s), trim (s), isEmpty(s), toString(v) etc.
LIBRERIAS WMLSCRIPTLIBRERIAS WMLSCRIPT
Dialog prompt (mensaje, valor_defecto) confirm (mensaje, afirmar, rechazar) alert (mensaje)
WMLBrowser getVar(v), setVar(n,v), go(url), prev(), refresh(), newContext(), getCurrentCard()
LIBRERIAS WMLSCRIPTLIBRERIAS WMLSCRIPT
URL Permite la validación y parseo de urls isValid(url), getHost(url) getPort(url) getParameters(url) getQuerry(url)
DESARROLLO DE UNA APLICACIONWAP CON SERVLETS
DESARROLLO DE UNA APLICACIONWAP CON SERVLETS
Java 2 Enterprise Edition Netbeans IDE Servidor apache TOMCAT Browser WinWap MySQL
CONFIGURACION DEL SERVIDOR TOMCATCONFIGURACION DEL SERVIDOR TOMCAT
-Estructura del proyecto-webapp |-Mi_proyecto
|-WEB-INF|-classes
|-Servlets del proyecto|-lib
|-librerias_usadas|-web.xml
|-index.wml
CONTENIDO DEL ARCHIVO WEB.XMLCONTENIDO DEL ARCHIVO WEB.XML
<web-app>
<servlet> <servlet-name> Nombre del Servlet</servlet-name> <servlet-class> Nombre del .class del Servlet</servlet-class></servlet>
<servlet-mapping><servlet-name> Nombre del Servlet</servlet-name><url-pattern> ruta del servlet</url-pattern>
</servlet-mapping>
<welcome-file-list> <welcome-file> Pagina de inicio WML(index.wml) </welcome-file></welcome-file-list>
CONTENIDO DEL ARCHIVO WEB.XMLCONTENIDO DEL ARCHIVO WEB.XML
<mime-mapping><extension>wml</extension><mime-type>text/vnd.wap.wml</mime-type></mime-mapping>
<mime-mapping><extension>wmls</extension><mime-type>text/vnd.wap.wmlscript</mime-type></mime-mapping>
<mime-mapping><extension>wbmp</extension><mime-type>image/vnd.wap.wbmp</mime-type></mime-mapping>
</web-app>
COMO EJECUTAR UN SERVLET DESDE UNA PAGINA WML
COMO EJECUTAR UN SERVLET DESDE UNA PAGINA WML En WML no existe el tag form por lo cual
para realizar un POST o un GET a un Servlet es necesario usar el tag go de la siguiente manera:
<do>|<href><go method="POST/GET" href="http://localhost:8080/Miproyecto/MiServlet">
<postfield name=“Nombre parametro1" value=“valor"/><postfield name=“Nombre parametro2" value=“valor"/><postfield name=“Nombre parametro3" value=“valor"/>
.
.
.<postfield name=“Nombre parametroN" value=“valor"/>
</go></do>|</a>
EJEMPLO PRACTICOBANCO.WMLEJEMPLO PRACTICOBANCO.WML
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml><card id="1"><p>Bienvenidos a CajaMadrid</p><img src="cj1.wbmp" alt="logo"/><do name="accept" label="login">
<a href="funciones.wmls#pedirClave()"/></do><do name="accept" label="menu">
<a href="#2"/></do></card><card id="2"><p><a href="#3">Sacar Dinero</a></p><p><a href="#4">Ingresar Dinero</a></p><p><a href="#5">
Consultar saldo<go method="POST" href="http://localhost:8080/wml/Banco">
<postfield name="tipo" value="consultar"/><postfield name="pass" value="$(resultado)"/>
</go></a></p></card>
EJEMPLO PRACTICOBANCO.WMLEJEMPLO PRACTICOBANCO.WML
<card id="3"><p>Cantidad</p><input name="cantidad" value=""/><do type="accept" name="aceptar" label="Aceptar">
<go method="POST" href="http://localhost:8080/wml/Banco"><postfield name="tipo" value="sacar"/><postfield name="cant" value="$(cantidad)"/><postfield name="pass" value="$(resultado)"/>
</go></do>
</card><card id="4">
<p>Cantidad</p><input name="cantidad" value=""/><do type="accept" name="aceptar" label="Aceptar">
<go method="POST" href="http://localhost:8080/wml/Banco"><postfield name="tipo" value="ingresar"/><postfield name="cant" value="$(cantidad)"/><postfield name="pass" value="$(resultado)"/>
</go></do>
</card>
</wml>
EJEMPLO PRACTICOBANCO.JAVAEJEMPLO PRACTICOBANCO.JAVA
public class Banco extends HttpServlet {
public void init(ServletConfig cfg) throws ServletException { String sURL="jdbc:mysql://localhost/Banco"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection(sURL);} catch(Exception e) {} } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String cantidad=(String)req.getParameter("tipo"); if(cantidad.equals("sacar")){ sacarDinero(req,res); } else if(cantidad.equals("ingresar")){ ingresarDinero(req,res); } else if(cantidad.equals("consultar")){ consultarSaldo(req,res); } }
EJEMPLO PRACTICOBANCO.JAVAEJEMPLO PRACTICOBANCO.JAVApublic void consultarSaldo(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException { res.setContentType("text/vnd.wap.wml");
………… try { set = con.createStatement(); rs = set.executeQuery("SELECT * FROM USUARIO,CUENTA where
USUARIO.PASS="+Integer.parseInt(password)+" AND ID=ID_PROPIETARIO");
out.println("<?xml version="+"\""+"1.0"+"\""+"?><!DOCTYPE wml PUBLIC
"+"\""+"-//WPFORUM//DTD WML 1.1//EN"+"\""+" \""+"http://www.wapforum.org/DTD/wml_1.1.xml"+"\""+">");
out.println("<wml>"); out.println("<card>")
………….. out.println("</card>"); out.println("</wml>"); rs.close(); set.close(); } catch(Exception e) { System.out.println("No lee de la tabla"); System.out.println(e.toString()); } }
TECNOLOGÍA XHTML-MPTECNOLOGÍA XHTML-MP