国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

WML開發詳細指南

2019-11-18 16:08:33
字體:
來源:轉載
供稿:網友

    WAP開發入門--搭建開發環境講述了如何搭建WAP應用程序的開發環境,本章將主要介紹WML的相關知識,如何開發WAP應用程序。

    WML是一種基于xml的標記語言,她的官方說明和規范是由WAP論壇維護的。WML的文檔類型定義是xml文件類型的,http://www.wapforum.org/DTD/wml_1.1.xml。和Html語言一樣,WML是為了顯示數據的,而XML的目的則是描述數據,我們定義了一系列的標記并組織成為語法規范把它稱為DTD(Document Type Definition)。支持WAP的手機里面都安裝了WAP瀏覽器他能夠解析這些標記并正確顯示在手機屏幕上。

    通常在WML的文本的開頭都有這樣的內容
<xml version='1.0'>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
我們把它叫做序言。在后面就是<wml></wml>標記了,我們所有的數據都是嵌套在這兩個標記里面的。WML的標記非常少,基本可以分為兩種一種稱為Deck/Card一種稱為Event。在這里不能一一講述,在我們開發WML應用的時候參考手冊就可以了,我給大家提供一個在線的參考:Online WML Tag Reference。在<wml></wml>標記內的內容我們把它稱為deck,每個屏幕的內容我們把它定義為card,由于WML是為無線網絡傳輸定義的,充分考慮到帶寬的限制,我們允許在一個deck內包含多個card并可以一起下載到用戶代理中,這樣我們就可以在本地進行不同屏幕的切換了,避免每次都去聯網。當然這也給客戶端增加了負擔,因此我們要避免在deck內包含過多的card。

    下面我們編寫一個WML的例子test.wml,內容如下:
<?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="Login" title="Login">
  <do type="accept" label="PassWord">
   <go href="#Password"/>
  </do>
  <p>
  UserName:
  <select name="name" title="Name:">
   <option value="John Doe">John Doe</option>
   <option value="Paul Smith">Paul Smith</option>
   <option value="Joe Dean">Joe Dean</option>
   <option value="Bill Todd">Bill Todd</option>
  </select>
  </p>
 </card>

 <card id="Password" title="Password:">
  <do type="accept" label="Results">
   <go href="#Results"/>
  </do>
  <p>
  Password: <input type="text" name="password"/>
  </p>
 </card>

 <card id="Results" title="Results:">
 <p>
 You entered:<br/>
 Name: $(name)<br/>
Password: $(password)<br/>
 </p>
 </card>
</wml>
在這個deck中包含了三個card,可以一并下載到客戶端,通過按鍵操作我們就可以在不同的card之間進行切換,你可以在手機或者winwap模擬器中看看運行的效果。下面是winwap下的運行截圖。
WML開發詳細指南(圖一)WML開發詳細指南(圖二)WML開發詳細指南(圖三)


    雖然我們已經可以開發wml的應用了,但是這些畢竟都是些靜態的內容。如果我們要開發和服務器交互的功能呢?答案當然是我們可以使用Servlet技術。看下面的例子:
<?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="Order" title="Query Inventory">
  <p>
  <select name="Items" title="Items">
   <option value="Books">Books</option>
   <option value="Music">Music</option>
   <option value="Video">Video</option>
   <option value="Software">Software</option>
  </select>
  </p>
  <do type="accept" label="Query">
   <go method="get">
    <postfield name="Items" value="$(Items)"/>
   </go>
  </do>
 </card>
</wml>
用戶可以從列表中選擇Item,通過無線網絡傳輸給服務器后Servlet通過request.getParameter()方法得到用戶的選擇并發送給用戶,servlet的代碼如下:

package com.j2medev.mingjava;

import java.io.IOException;
import java.io.PRintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class WapServlet extends HttpServlet
{

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {
        String select = request.getParameter("Items");
        response.setContentType("text/vnd.wap.wml");
        PrintWriter out = response.getWriter();
        out.println("<?xml version=/"1.0/"?>");
        out.println("<!DOCTYPE wml PUBLIC/"-//WAPFORUM//DTD WML 1.1//EN/"");
        out.println("/"http://www.wapforum.org/DTD/wml_1.1.xml/">");
        out.println("<wml>");
        out.println("<card title=/"test/">");
        out.println(" <p align=/"center/">");
        out.println("you selected "+select);
        out.println("</p>");
        out.println("</card>");
        out.println("</wml>");


    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {
        doGet(request,response);
    }
}
正確部署Servlet和wml文件后,在winwap下輸入http://222.28.218.222:8088/test2.wml 確認后就可以看到you selected xxxx的內容了。

(出處:http://www.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南丹县| 石渠县| 边坝县| 浠水县| 凤凰县| 鸡西市| 固镇县| 哈尔滨市| 元江| 永顺县| 麻江县| 洪洞县| 延寿县| 邵东县| 大足县| 广饶县| 张家港市| 柘荣县| 宝应县| 海盐县| 琼结县| 福清市| 左权县| 镇坪县| 阳江市| 甘洛县| 阿克陶县| 耒阳市| 全州县| 石棉县| 泾川县| 郑州市| 富裕县| 沈阳市| 德庆县| 阿巴嘎旗| 涟源市| 比如县| 建湖县| 儋州市| 蓬安县|