ITPub博客

首页 > Linux操作系统 > Linux操作系统 > WAP初级教程(转)

WAP初级教程(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-04-26 11:12:07 0 删除 编辑

任务(TASK)






  前面我们已经讲过如何在WML中显示内容。不过任何程序员都知道,没有结构和进程就没有程序。在WML中定义进程有很多方法,最简单的就是任务。

  WAP1.1定义了几种类型的任务,任务通过对事件(有关事件的详细解释见下一章事件)的响应改变程序的运行顺序。有四种WML任务: 、 、 和 

[TOP]
这个任务不做任何事情,一般用于屏蔽DECK级事件(参见桌面和事件),语法非常简单:


[TOP]
当用户激活该任务时,终端就转回上次用户访问过的URL。语法如下:

  
   ......


如果中包含了元素,就会优先处理。下面例子定义了一个只有Back按钮的的DECK,按下以后会返回前面看过页面。

"http://www.wapforum.org/DTD/wml_1.1.xml">



 


  
    Back
   
  

 




[TOP]
当用户激活该任务时,就执行一个刷新过程。如果这个任务里使用定义了变量,变量值将被重新设置。语法如下:

  
   ......

如果当前CARD含有元素,那么在刷新时优先启动。
下面的例子定义在屏幕刷新时重设firstname、lastname和age变量。

 
  
  
  
 


[TOP]
当用户激活该任务时,就引导用户去WML中指定URL,可以是服务器上其他的DECK,也可以是本DECK中其他的CARD。语法如下:
   accept-charset="STRING"
   href="URL"
   method="post|get" sendreferer="true|false" >
   , ......

href:必选属性,指向一个合法URL。如果是其他的DECK,则该DECK的第一个CARD会显示出来。如果是本DECK中的其他CARD,而历史堆栈里保存的是最新数据的话,则堆栈保持不变,直接调入该CARD。
sendreferer:如果为true,用户主体信息(USER AGENT)必须传送给WAP网关。传送时使用HTTP的提交头信息,即尽可能简短的相对URL。这个属性可以用来给服务器控制存取URL的权力。默认值为false。
Method:值必须为get或post。分别用来产生HTTP的GET和POST请求。若为get,则在URL中列出参数,例如:“http://www.wap86.net/bob.cgi?argone=one”;若为post,则数据在请求内部传送,不需要在URL中列出。
Accept-charset:指定字符集名称列表,服务器在接受的时候必须接受这个编码规则。默认值为unknown。具体内容这里不作解释,在以后的高级教程中描述。
下面是一个简单的例子:


[TOP]
并不是一个任务,但是跟任务有关,所以在这里介绍。它用来定义“名称/值”对以便通过向服务器发送HTTP请求。语法如下:
当用户激活该任务时,就引导用户去WML中指定URL,可以是服务器上其他的DECK,也可以是本DECK中其他的CARD。语法如下:
下面是一个简单的例子:

当一个含有的任务被执行的时候,终端要完成这样一个过程:
1、识别“名称/值”对并准备参数变量;
2、参数变量转换成正确的字符集;
3、根据URL的ESCAPE规则对参数进行ESCAPE转码,编译成application/x-www-form-urlencoded的MIME类型;
4、根据method指定的请求模式提交任务。
下面的例子演示get模式的用法:

 
 


服务器将收到这样的get请求:
GET ../news.asp?newstype=technology&newstext=wml HTTP/1.1
.
. 其他HTTP头信息
.

如果把前面的请求模式改成post,则同样的任务产生的这样的post请求:
POST../news.asp HTTP/1.1
content-type="xxx-urlencoded" .
. 其他HTTP头信息
.
newstype=technology&newstext=wml

事件 (EVENT)
链接
固有事件
计时器
用户触发事件

DECK级事件

任务不能在真空中生存,它们必须绑定倒某个事件上才能做一些有用的事情。事件发生--〉任务执行,这才是完整的进程控制。
有4个元素可以帮助你完成事件对任务的绑定:
链接
象HTML一样,WML也可以定义到其他程序的链接。在HTML中,链接通常用下划线和特殊颜色的方式表示跟其他内容的区别。在WAP终端上则没有严格的规则说如何表示一个链接,一般采用反白的显示方式。
的语法如下:
   title="STRING"
   xml:lang="STRING"
>
 
, , , , , TEXT

title:链接的标题;
xml:lang:语言编码。
在这种定义方式中,实际上链接一般是通过中包括的元素完成的。比如下面的例子定义了2个CARD,点击第一个CARD里的“click me”链接会跳转到第2个CARD:

  "http ://www.wapforum.com/DTD/wml_1.1.xml">



 

Hello,
  click me
  
 

 





 

Bye, guys





点击前显示: 点击后显示:
------- Hello -------
Hello,
-------- bye --------
Bye, guys

链接还有一种短格式,语法如下:
   href="STRING"
   title="STRING"
   xml:lang="STRING"
>
 
, , TEXT

除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。例如下面的例子定义了一个带有图像的链接:

  Hot Bars

除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。

固有事件 [TOP]
WML定义了4种由用户终端触发的固有事件:
oneventforward:当用户被任务或其他机制(如一个SCRIPT过程)引导到一个CARD时触发;
oneventbackward:当用回被或其他机制(如在设备上按BACK按钮)引导到一个CARD时触发;
ontimer:当TIMER计时结束时触发。定义TIMER计时器可以使用元素,见下一节;
onpick:当用户按下一个