亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

WML語言的基本情況

2024-09-05 00:17:30
字體:
來源:轉載
供稿:網友

用于WAP的標記語言就是WML(Wireless Markup Language)?! ML的語法跟XML一樣,WML是XML的子集?! TML、XML和WML的文件有很多相似之處,這樣網頁開發者在過去10年中所學的東西今天依然適用。 WML頁面文件的后綴是 *.WML,就象HTML的 *.HTML后綴。 XML規定定義了一個規范的XML文件的規格。任何違反這個規定的WML文件會出錯。WML文件通常使用XML解釋器起來解釋。 建立網頁制作環境  WML文件本身就是文本文件,所以編輯不成問題,順手的編輯器都可以用。 當然,由于目前的瀏覽器還都不能顯示WML頁面,而我們又不能總在手機上進行測試(速度太慢),所以需要模擬器?,F在象NOKIA、ERICSSON、MOTOROLA等手機制造商都生產了相應的產品,你只要下載就行了。當然除了模擬器以外,還需要圖形制作轉換器(用來制作WAP格式的圖形文件)、字符轉碼器(漢字<=>UNICODE)等等,本站工具及論壇頁面均有說明。 WML文件結構  WML的頁面通常叫做桌面(DECK),由一組互相鏈接的卡片(CARD)組成。當移動電話訪問一個WML頁面的時候,頁面的所有CARD都會從WAP服務器下載到設備里。CARD之間的切換由電話內置的計算機處理,不需要再到服務器上取信息了。CARD里可以包含文本、標記、鏈接、輸入控制、任務(TASK)、圖像等等。CARD之間可以互相鏈接。   文檔的實體包含在...標記中,文檔里每個CARD又包含在...標記中,然后實際的文字段落則包含在標記中。 簡單例子:

Hello world!

顯示結果如下: ------ HELLO ------ Hello World! DECK里面各個組成部分的具體解釋在本教程的其他部分有說明。 WML字符集  WML是XML的子集,繼承了XML的字符集設置。WML文檔缺省的字符集是UTF-8。 要顯示中文,有兩種辦法。最簡單的辦法就是在文檔頭使用encoding,即把第一行改為:   然而令人喪氣的是,這種方法有些手機和模擬器并不支持(將來會的),所以目前第2種方法更普遍:不改變字符集設置,但是在寫中文的時候采用UNICODE代表中文字符,如: 通訊錄 代表: 通訊錄 WML元素:標記(Tag)和屬性  WML的主要內容是文本,由于標記會降低與手持設備的通訊速度,所以WML標準里僅僅使用了很少一部分。用于表格和圖像的的標記幾乎都被排除了。   與XML一樣,在WML語言中,所有元素都放在符號"<" 和 ">"中,并且包含一個開始標志、一個結束標志和一個內容標志,或者使用自身結束的控制標記。就象這樣: 內容 例如:

Hello World!

或 例如:

和   WML同樣支持在標志中標出屬性。屬性是標志的附加信息,與元素的內容不一樣,它并不在屏幕上顯示出來。屬性通常在元素的開始標志后指定。如上面最后一個例子。   由于WML是XML的一種應用,因此所有的WML標記和屬性都是大小寫敏感的(跟完全不同),而且所有的標記都必須正確地結束。WML要求屬性的值必須放在雙引號或單引號內。單引號可放在屬性標志內或雙引號內。字符亦可作為屬性的值。 WML注釋  XML支持這樣的注釋格式: 這些注釋在瀏覽器中并不顯示出來。 WML不支持嵌套元素注釋。 鏈接(URL) WML外部引用方式跟HTML相同 http://www.itsalon.net/index.wml 或 http://www.itsalon.net/index.wml#login 內部引用,如果next是當前DECK中的一個CARD時,可以用這種方式: #next 提供鏈接功能的WML元素有2個:(參見任務)和(參見事件)。 CDATA   XML支持CDATA的概念,以顯示不需要解釋的文本。下面的例子使用CDATA元素在WML頁面中顯示WML命令文本。 ] ]> 瀏覽器窗口將顯示如下內容:

this is data

有了上面的基礎,相信大家已經能夠做不少事情了。現在我們來深入一下,看看如何提高性能和網絡傳輸效率。首先,需要介紹一下http 1.1(RFC2616)的基礎知識。當然,如果你已經很熟悉了,可以跳過第一部分。 一、HTTP 1.1的簡要介紹  HTTP 1.1是一個基于文本的互聯網實體信息交互主流協議,這里的實體可以是WAP兼容瀏覽器之類的用戶終端,可以是WAP網關之類的代理服務器,也可以是Java servlet之類的源服務器程序。它們之間的交互信息就是兩大類:客戶端對服務器端的請求(request)和服務器端對客戶端的響應(response)。一次完整的交互包括一個請求和對它的響應。 所有的請求和響應都采用[RFC822]中定義的標準互聯網消息格式,框架如下:  * 消息定義   * 沒有或多個消息頭  * CRLF(空行回車)   * 可選的消息本體   其中消息定義不分指定了發送消息的類型。請求和響應都可以包含多個消息頭,用來進一步或者重新定義用戶終端和服務器之間的交互。CRLF僅僅用來將信息定義和消息本體分開。 1、請求  在消息定義部分可以這樣定義請求: 請求類型 URL HTTP/1.1 其中請求類型可以是下面的一種:  ?、? OPTION:返回請求者和相應者之間可以使用的通信選項,主要用來檢測服務器處理能力; ?、? GET:獲得以URL標示的文件內容或者程序執行結果。服務器根據文件名后綴判斷服務內容,比如該URL是靜態文本還是一個程序;  ③. HEAD:除了不返回響應的信息本體以外,得到的是跟GET一樣的信息。一般用來測試鏈接的有效性、可達性和近期修改;  ④. POST:把消息本體中的消息發送到一個URL或者其他類似的服務器端定義行為。通常用來提交一個HTML表單或者一些數據操作活動;  ?、? PUT:把消息本體中的消息發送到一個URL,跟POST類似,但不常用; ?、? DELETE:刪除URL指定的資源;  ⑦. TRACE:調用一個遠程應用層請求消息回路。發出這個消息的用戶終端除了收到原來的消息內容以外,還得到消息在Internet上的傳送路徑。   最常用的請求類型--也是我們在處理WAP應用時最關心的--是GET和POST。假設有一個WML文檔,我們用UP的瀏覽器去瀏覽的話,就會向服務器發出如下GET請求: GET www.itsalon.com/wap/index.wml HTTP/1.1 accept-charset: UTF-8 accept-language: ch accept: text/vnd.wap.wml, */*, image/bmp, text/html user-agent: UP.Browser/3.1-UPG1 UP.Link/3.2 host: www.itsalon.net …… 其中粗體的部分是HTTP消息頭,這里我們忽略了一些與我們關系不大的消息頭。 accept-charset: 用戶終端支持的字符集 accept-language: 用戶終端目前使用的語言 accept: 用戶終端可以接受的MIME文件類型 user-agent: 用戶終端供應商提供的終端描述信息 host: 請求信息發送到的域名 2、響應  響應的消息定義部分一般是這樣的:HTTP/1.1 狀態碼狀態描述在[RFC2616]中定義了近40種不同的狀態碼(分成5組)。其中最常見的是3個: 200 OK 401 Unauthorized 404 Not Found 繼續上面那個例子,如果該URL合法的話,服務器的響應會是這樣的: HTTP/1.1 200 OK Server: www/5.0 Date: Fri, 26 Oct 2000 12:15:23 GMT Connection: Keep-Alive Content-Length: 1211 Content_Type: text/vnd.wap.wml Last-Modified: Mon, 22 Oct 2000 18:19:24 GMT …… 其它內容 ……   這個響應信息里包括了響應的數字代碼和文本描述,然后是一組消息頭。在一個換行符以后就是消息本體,在這里,消息本體就是www.itsalon.net/index.wml的源代碼。 Server: 發出響應的服務器 Date: 響應發出的時間 Connection: 指示用戶終端保持連接 Content-Length: 響應信息的長度,從DECK的第一個"<"字符開始計算 Content_Type: 響應的MIME類型 Last-Modified: 響應中DECK的最后修改時間   當用戶終端接收到響應以后,會對其狀態信息和消息頭進行解碼,然后決定對響應做出什么樣的動作。如果收到OK響應,一般會把消息本體里的內容顯示在屏幕上。對于桌面終端,通常是HTML,對于WAP瀏覽器,則是WML。   HTTP是一種很煩瑣的協議。即使是簡單沒有任何數據的請求和響應都要產生數百字節的消息。WAP通過WAP網關來解決這個問題。WAP網關一個很重要的功能就是把所有的HTTP1.1消息轉換成無線任務協議(Wireless Session Protocol, WSP)的消息格式。這種格式是壓縮的二進制協議,兼容HTTP1.1。它能解析所有的請求和響應消息,并轉換成最精簡的BIT序列。 到這里我們已經介紹了HTTP1.1的主要內容。當然HTTP1.1還有很多復雜的內容,但是在這里并不打算多講,如果你有興趣,可以去相關網站查找它的資料。作者只想大家知道一點:用戶終端和服務器之間還有比GET和POST請求更多的互動消息,它們一樣有請求和響應消息頭,并且可以包含一些信號來影響WAP應用程序的執行和性能。這正是提高WAP運行效率的秘密所在。 二、緩存(Caching)  根據[RFC2616]的定義,緩存是:"程序中響應消息的本地儲存區以及控制這些消息儲存、重新獲取和刪除的子系統。緩存保存可以緩存的響應消息以便降低將來的響應時間和網絡帶寬消耗,同樣也適用于請求消息。"   由于WAP信道帶寬的限制,我們在編寫WAP應用的時候都希望最大限度地減少消息的傳送量。要做到這一點,就要盡量地使用緩存,經常地從緩存中獲得以前的消息。幸運的是目前大多數WAP設備都有一定級別的緩存,在默認情況下,會嘗試最大化的緩存。幾乎所有指向URL的響應都會被緩存下來。   當WAP用戶終端緩存一個響應的時候,會保存幾乎所有的信息:URL、響應文本、消息頭以及其他可以驗證響應的內容(參看下一節"驗證和歷史堆棧")。每個被緩存的項目都可以根據它的URL組成部分(域名、路徑、協議、參數、端口等等)唯一的識別。   有兩種HTTP消息頭可以讓你控制WML的DECK緩存,對我們最重要的是Cache-Control消息頭。它能夠直接通過請求/響應鏈來控制所有的緩存實體。所有的緩存機制都必須遵守這些消息頭的定義。Cach-Control消息頭通常用來屏蔽一個設備的默認緩存行為。他們在消息鏈中傳遞時必須直接穿過所有的代理服務器和網關而不被改變。   * Cache-Control: no-cache。設定這個選項的URL不能被緩存,包括用戶終端和所有處于內容服務器和用戶終端之間的其他服務器;   * Cache-Control: max-age=。定義URL保存在設備緩存中的最長時間。時間到了以后,這個實體會從緩存中清除;  * Expired: 。指定URL在緩存中存放的最后日期期限。[RFC1123]定義了日期的格式,通常是這樣的:Expires: Sun, 29 October 2000 17:30:47 GMT 在寫一個WAP應用的時候,你要先假設用戶終端會盡量最大化緩存以便使向內容服務器獲取信息的動作減少到最少。下面做些解釋: 1、永久緩存URL WAP用戶終端通常會盡量長地在它的緩存中保存存取過的URL,這個"盡量長"在Phone.com瀏覽器中的定義是大約30天。不過,也許你會想把一個URL的緩存時間盡量延長,比如你公司的LOGO,這樣每次打開頁面的時間就會減少。用下面兩種方法能夠很簡單地實現:   * 指定一個離現在很遠的過期日,比如:Expires: Tue, 01 Jan 2002 00:00:00 GMT;   * 指定一個很大的緩存時間,如:Cache-Control: max-age=3153600。這個例子可以讓URL緩存一年。用戶終端允許的最大整數是2,147,483,647,所以你可以讓一個URL保存超過68年之久。當然,到那個時候,你的手機早就那報廢了。 2、指定對URL的緩存時間  通常的情況是對一個URL你只需要緩存一段時間。比如股票報價系統,網頁可能需要5分鐘更新一次,那么你只要在DECK的HEAD部分指定Cache-Control: max-age=300就行了。 如果用戶在5分鐘以內再次檢索該頁面,看到的還是緩存里的網頁。如果在5分鐘以后,就會到服務器上獲取最新的數據。   另外一種控制緩存時間的方法是使用前面提到過的Expires,不過這種方法只能告訴用戶終端:只要過了指定時間,無論什么時候訪問頁面都要刷新。如果你下次要控制時間,只能改變Expires里的時間值。 3、禁止對URL的緩存  對于快速變化的內容,一般都會希望每次都得到最新的數據。所以這個時候要完全禁止對相關網頁的緩存。方法有三種:   * 設定Cache-Control: no-cache;   * 設定最大緩存時間為0,Cache-Control: max-age=0;   * 設定緩存到期日為一個早就過去的日期,Expires: Mon, 1 Jan 1990 00:00:00 GMT。 實際上,后兩種不是最好的選擇。首先這樣會多占用終端的處理時間,因為當碰到這個DECK時,終端需要計算一下過期時間。其次,這樣會多占用一些字節,而且在表達上也不夠清楚。 三、驗證(validation)和歷史堆棧(History Stack)  在HTTP1.1中對緩存進一步提出了驗證的概念。驗證的目的就是檢驗緩存項目是否在有效期內。由于歷史堆棧的存在,WAP終端上的驗證過程變得有點復雜。   WAP標準規定所有的WAP設備都至少要有可以容納10-個項目的歷史堆棧。當用戶按下由或其他轉向指令的定義的前行(forward)鏈接時,URL被推(push)入堆棧。如果按下由 定義的后退(backward)鏈接,URL被彈(pop)出。   一般情況下,所有的前行鏈接都會被驗證,而后退鏈接則不會,因為它已經在cache里了??墒俏覀冇袝r候還是希望當用戶按下后退鍵時依然能夠得到最新的數據。如果終端總是不予驗證的話,那用戶只好找到主菜單再重新進入那個頁面。   幸運的是,我們用Cache-Control:must-revalidate就可以強迫用戶終端在用戶按back時對URL進行驗證。當然,進行驗證并不是說該頁面會立刻重新讀取,而是根據他是否過期來決定。如果沒有過期,驗證的結果仍然是顯示緩存中的頁面。   如果你需要每次back都重新讀取頁面,用Cache-Control:must-revalidate, no-cache可以實現。另外,把 no-cache換成max-age=300就可以在back時對已緩存了300秒的頁面進行刷新。 四、HTTP頭與meta元素  到這里,大家已經知道HTTP消息頭的在WAP頁面的作用了。不過要在WML文檔里設置這些消息頭,就要用到meta元素,它只能出現在WML文檔段里。下面是幾個消息頭和它們的表示形式:   Expires: Mon, 10 Jan 2000 00:00:00 GMT   Cache-Control: max-age=300   Cache-Control: no-cache

當網關在WML文檔中掃描到元素時,就會把它們轉換成WSP等效的HTTP消息頭,然后用戶終端就可以據此對緩存進行控制了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品在线观看国产| 久久久91精品国产一区不卡| 亚洲成人激情图| 精品久久久久久中文字幕| 96精品久久久久中文字幕| 日韩欧美a级成人黄色| 久久成人精品电影| 亚洲护士老师的毛茸茸最新章节| 久久精品99久久久久久久久| 国产97在线观看| 欧美日韩裸体免费视频| 久久成人综合视频| 欧美激情一区二区三区高清视频| 2019中文字幕在线免费观看| 欧美电影在线观看| 国产精品美女主播| 欧美视频免费在线观看| 国产一区二区丝袜高跟鞋图片| 日韩最新中文字幕电影免费看| 欧美性少妇18aaaa视频| 超碰97人人做人人爱少妇| 日本91av在线播放| 一道本无吗dⅴd在线播放一区| 一本大道香蕉久在线播放29| 欧美性猛交xxxxx水多| 国产99久久精品一区二区永久免费| 91精品国产91久久久久久| 成人国产精品免费视频| 久久视频国产精品免费视频在线| 国产精品流白浆视频| 亚洲视频免费一区| 亚洲人成电影网| 国产精品永久在线| 中文字幕亚洲欧美在线| 亚洲福利影片在线| 精品国产精品自拍| 97婷婷大伊香蕉精品视频| 一区二区国产精品视频| 日韩一区二区久久久| 91在线观看免费高清完整版在线观看| 色与欲影视天天看综合网| 久久精品国产精品| 疯狂蹂躏欧美一区二区精品| 黑人巨大精品欧美一区二区三区| 亚洲高清久久久久久| 久久精品国产99国产精品澳门| 日韩视频免费大全中文字幕| 久久久av电影| 国产精品久久久一区| 久久精品成人欧美大片| 最近2019年好看中文字幕视频| 精品久久久久久亚洲精品| 欧美一级片久久久久久久| 久久久女人电视剧免费播放下载| 日韩经典第一页| 538国产精品视频一区二区| 亚洲综合色av| 伊人成人开心激情综合网| 久久噜噜噜精品国产亚洲综合| 国产精品十八以下禁看| 亚洲精品成a人在线观看| 国产精品海角社区在线观看| 国产激情综合五月久久| 中文字幕亚洲一区二区三区五十路| 色妞色视频一区二区三区四区| 欧美国产日本高清在线| 欧美成年人视频网站欧美| 欧美国产日韩一区二区在线观看| 97香蕉超级碰碰久久免费软件| 大荫蒂欧美视频另类xxxx| 欧美午夜精品久久久久久久| 欧美激情一二区| 日韩高清免费在线| 国产精品视频色| 欧美精品aaa| 中文字幕日韩精品有码视频| 国产精品成av人在线视午夜片| 国产美女被下药99| 欧美在线视频网站| 精品国产乱码久久久久久婷婷| 亚洲福利在线视频| 亚洲欧美中文日韩在线v日本| 久久影视免费观看| 国产精品久久久久999| 亚洲免费福利视频| 日韩亚洲精品电影| 国产精品青草久久久久福利99| 欧美黄色片免费观看| 欧美刺激性大交免费视频| 中文字幕av一区中文字幕天堂| 91在线网站视频| 亚洲成人av片| 欧美性猛交xxxx久久久| 亚洲精品自在久久| 日韩在线观看免费| 97超碰蝌蚪网人人做人人爽| 国产美女扒开尿口久久久| 久久视频在线观看免费| 亚洲午夜色婷婷在线| 97激碰免费视频| 国产精品视频久久| 91在线精品视频| 欧美视频中文在线看| 黑人精品xxx一区一二区| 国产成一区二区| 亚洲第一av网| 中文字幕亚洲国产| 国产91|九色| 亚洲国产日韩一区| 66m—66摸成人免费视频| 亚洲国产一区二区三区在线观看| 亚洲国内高清视频| 疯狂做受xxxx欧美肥白少妇| 国产成人福利夜色影视| 久久久久国产精品免费网站| 国产精品永久免费在线| 日韩av有码在线| 亚洲成人免费在线视频| 成人性生交大片免费观看嘿嘿视频| 欧美大胆在线视频| 欧美大荫蒂xxx| 国产专区精品视频| 久久天天躁日日躁| 成人精品在线观看| 欧美www在线| 亚洲精品电影网站| 97香蕉超级碰碰久久免费软件| 亚洲国产欧美日韩精品| www.欧美视频| 亚洲国产欧美在线成人app| 久久夜色精品亚洲噜噜国产mv| 欧美床上激情在线观看| www.美女亚洲精品| 亚洲自拍偷拍第一页| 亚洲石原莉奈一区二区在线观看| 69视频在线播放| 欧美日韩免费网站| 亚洲少妇激情视频| 日韩精品高清视频| 精品中文字幕久久久久久| 成人欧美一区二区三区在线| 久久精品电影一区二区| 国产精品自产拍在线观看中文| 国产精品久久99久久| 日韩高清av在线| 日韩av电影在线免费播放| 亚洲另类欧美自拍| 日韩在线免费高清视频| 欧美极品少妇xxxxx| 国产欧美日韩免费看aⅴ视频| 色综合久久久久久中文网| 亚洲香蕉在线观看| 日韩不卡在线观看| 亚洲国产欧美久久| 精品亚洲夜色av98在线观看| 不用播放器成人网| 日韩电影中文字幕av| 欧美亚洲一级片| 97视频在线观看网址| 久久夜色精品国产亚洲aⅴ| 日韩高清电影免费观看完整版| 久久成人精品视频| 亚洲欧洲自拍偷拍| 久久久久久免费精品|