博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WAP手机网站开发
阅读量:6607 次
发布时间:2019-06-24

本文共 4743 字,大约阅读时间需要 15 分钟。

hot3.png

搭建开发环境:

 

这里开发环境我使用诺基亚提供的开发者软件:

编写、调试软件:Nokia.Mobile.Internet.Toolkit.4.1

安装这个软件之前需要安装JDK,版本要1.6以上的,安装完JDK之后,就可以安装诺基亚提供的软件了,安装的时候需要到诺基亚开发者论坛上注册一个用户,网址为:注册之后,会收到一封电子邮件,点击邮件中的确认连接,完成激活帐户。在安装程序中使用帐号登录后,诺基亚会向你的注册邮箱发一封电子邮件,里面有软件的使用序列号,复制粘贴后,就可以安装了,安装过程简单,出来其中需要开发帐号和序列号之外,和其他软件安装没什么区别

 

手机模拟器SDKNokia.Mobile.Browser.Simulator.4.0

安装了开发.wml文件的软件后,还需要安装一个手机模拟器,有了这个模拟器,才能访问.wml手机网页文件。 下载这个文件后,解压安装,模拟器同样需要序列号,到诺基亚开发者论坛上获取即可。这里提供一个:ZCygAB6ZMmtt/I4L1c2gppNX1H0=  将序列号复制粘贴后,即可安装,需要注意的是,安装路径要和上面安装的Nokia.Mobile.Internet.Toolkit.4.1路径一致,安装完成后,打开NMIT 4.1,可以看到 SDK Panel 面板中 显示Nokia Mobile Browser (v4.0) 了, 如果没有安装则显示 No Devices,安装成功界面:

图片

点击右边的绿色按钮,就可以打开手机模拟器了:

图片

 

测试一下,打开:file:///D:/Nokia/Tools/Nokia_Mobile_Internet_Toolkit/samples/WML/readme.wml

可以在模拟器中打开这个文件。

 

我的诺基亚开发者帐号:

序列号:HB7qzgYG/2bZH00jrtwmbaycXTo=

 

 

编写一个HelloWorld

 

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "">

<wml>

<card>

<p>

HelloWrold!

</p>

</card>

</wml>

 

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "">

这个是头部, 每个 .wml 都必须有,和html的头信息一个道理

当我们编写的wml页面的时候就可以 复制过去 。

<wml>....</wml> 里面的是 正文了,相当于 html 网页的 <body>....</body>

<card></card> 可以理解为卡片,多个界面都是有多个<card></card>组成。

 

最后就是运行,手机模拟器进行浏览

点击 File -> Open File

 

找到刚才的文件打开就可以了

如果你修改了 页面, 只要在手机模拟器上按下Ctrl+R刷新一下就可以了

你要显示当前卡片的 标题则要加入 card 的其中一个属性

<card title="www.17rumen.com">

 

 

多卡片card管理和导航

 

上面说到了<card></card> 我们把它可以理解为卡片,现在呢,我想在手机模拟器上再显示其他东西呢?我们不需要另外做一个界面,只要在<wml>....</wml>标签里面多写一个<card></card>就可以了,因为在一个.wml文件里面出现了多个<card></card>组,所以为了以示区别,加入一个属性id

<wml>  

<card id="c1" title="c1 card">

<do type="accept" label="Next">

<go href="#c2" />

</do>

 

<p>Hello World</p>

</card>

 

<card id="c2" title="c2 card">

<do type="prev">

<prev/>

</do>

 

<p>Hi , c2</p>

</card>

</wml>

 

do 可以看着是一个 动作ccept 你可以理解成 后操作, label="Next" 显示给用户操作的信息, 也就是用户会看到 Next 这个选项, 当用户点击了 Next 就会 执行 <go href="#c2" />这不难理解, 就会 跳转到 c2 显示 <p>Hi , c2</p> 内容了。

 

 

动作事件

 

<wml>  

<card id="c1" title="c1 card" ontimer="#c2">

<timer value="30" />

<p>Hello World</p>

</card>

 

<card id="c2" title="c2 card">

<p>Hi , c2</p>

</card>

</wml>

 

加入 ontimer 事件3秒后 进入 c2 的卡片

 

<wml>  

<card onenterforward="wml_04.wml">

<p>Hello World</p>

</card>

</wml>

 

格式化文本

<p>

<b>Hello World</b> <br/> 

<u> hi</u> <br/>

<i>www.17rumen.com</i>

</p>

 

此类标签和html标签区别不是很大,用手册查看一下就能明白的

 

 

用户输入数据:

 

wml 也有这样的一个标签 input , 就像 html 一样, 提供一个输入框

假设 要做一个 用户登陆的界面

<card id="c1" title="Login!">

<p>

Name:<input name="userName" />

</p>

</card>

html网页中,点击一般会提供按钮,但是在wml语言中,是不支持buttion的,wml语言中,基本是一些链接,它只支持<a>标签。

做一个登陆按钮:

<a href="#c2">Login</a>

当点击 Login 就会跳转到card2 

现在我们要实现这样一个功能,当用户输入用户名后,点击Login后,在另外一个card上显示我们刚才的用户信息。这里需要涉及到获取用户值的问题了,在wml中非常方便做此类操作:

<p>$(userName)</p>

只需使用 $(input的名字这样就可以获取 刚才输入的值了

 

input 标签, 如果想做成密码框的话就要加入 type="password" 也就是<input type="password" name="password" />这样就会看到输入的东西用 "*" 显示出来input 标签还有很多属性,例如限制文本框的长度 size还有 format , 其中 format 中有很多可以限制用户 输入

 

 

Select标签  多选、单选:

 

Wml语言中除了文本输入框之外,还有别的标签可以使用如select

<select>

<option>Java</option>

<option>WML</option>

<option>C++</option>

</select>

如何在另一个卡片上显示所选择的数据呢?

<select name="s_1">

<option value="java">Java</option>

<option value="wml">WML</option>

<option value="c++">C++</option>

</select>

这样数据就可以获取并且显示出来了

上面的只是单选,多选的时候只需要在 select 加入 multiple="true" 就代表多选了

 

 

wml script脚本:

 

html网页中,我们经常使用javascript来对用输入的数据进行验证,在wml中,并不支持javascript语言,而是使用更轻量级的WMLScript 脚本。WMLScript示例:

extern function disp(str)

{

var userName = WMLBrowser.getVar( str );

 

if( userName == "" )

Dialogs.alert( "Please enter your name, Try again." );

else

WMLBrowser.go( "hhb.wml#c2" );

}

脚本文件的命名方式和javascript也有所不同,WMLScript文件使用.wmls后缀。

 

写好了一个脚本文件,如何调用它呢?

<a href="hhb.wmls#disp('userName')">Login</a>

Wmlscript如何要执行运算的话,就会用到数据类型转换,Wmlscript中将字符类型转为数字类型的函数为:Lang.parseInt()

 

 

Wml和后台通信:

 

通常动态网页是这样运作的,前台页面提交数据给后台,后台接收后进行处理,然后返回一个页面给前台显示,wml也不例外。这里我们使用wmlservlet进行通讯:

 

Wml页面:

<a href="(userName)">

Login

</a>

 

Servlet代码:

import java.io.*; 

import javax.servlet.*; 

import javax.servlet.http.*; 

public class MyServlet extends HttpServlet 

 

public void service (HttpServletRequest request, HttpServletResponse 

response) throws ServletException, IOException 

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

PrintWriter out = response.getWriter(); 

String userName = request.getParameter("userName");

 

 

if( !userName.equals("hehongbo") )

{

response.sendRedirect("/wml/wml_06.wml");

}

 

out.println("<?xml version=\"1.0\"?>"); 

out.println("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""); 

out.println(" \"\">"); 

out.println("<wml>"); 

out.println("<card title=\"Welcome!\">"); 

out.println(" <p align=\"center\">"); 

 

out.println("Hello, "+ userName ); 

 

out.println("</p>"); 

out.println("</card>"); 

out.println("</wml>"); 

 

Wml页面传递一个参数过来,后台servlet对数据进行判断,如果手机用户输入的名字不是hehongbo,则返回到输入页面,如果输入的名字是hehongbo那么就会显示一个Hellohehongbo

转载于:https://my.oschina.net/hehongbo/blog/203345

你可能感兴趣的文章
JS基于正则实现数字千分位用逗号分割
查看>>
七月SSL行业新闻回顾
查看>>
专访Mockplus用户齐嘉伟 | Mockplus满足做原型的所有需求
查看>>
01、Vue.js 开篇---Vue的介绍及准备工作
查看>>
Java操作MongoDB采用MongoRepository仓库进行条件查询
查看>>
你应该知道的 RPC 原理
查看>>
将Android手机无线连接到Ubuntu实现唱跳Rap
查看>>
对话 | 薛娅菲:从0到1,行则将至
查看>>
开发一个工业互联网应用到底需要几步?
查看>>
别人在忙挖矿,阿里工程师却悄悄用区块链搞了件大事!
查看>>
Flutter 构建完整应用手册-设计基础知识
查看>>
对事件的基本理解
查看>>
111111 排序算法
查看>>
四周第二次课(11月7日) 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
查看>>
rpm包介绍、 rpm工具用法 、yum工具用法、 yum搭建本地仓库
查看>>
PyCharm的Column Selection Mode提供了列选择功能。
查看>>
MySQL的索引策略(1)
查看>>
select下拉框,选择其中一个,然后进行查询,完成之后,页面上的select框不回显当前查询时选中的值...
查看>>
python3基础——函数(2)
查看>>
TOKEN设计
查看>>