您現在的位置是:電腦技術吧?>? 基礎知識 ??>??語言有哪些,語言??>??正文詳情

語言有哪些,語言

熊柔麗2019-12-05 11:41:55 人圍觀
簡介使用最多的語言WAP的標記語言是WML(無線標記語言)。WML的語法與XML相同,XML是XML的一個子集HTML、XML和WML文件有許多相似之處,因此web開發人員在過去全球語言

用于WAP的標記語言就是WML(Wireless Markup Language)。

  WML的語法跟XML一樣,WML是XML的子集。

  HTML、XML和WML的文件有很多相似之處,這樣網頁開發者在過去10年中所學的東西今天依然適用。

WML頁面文件的后綴是 *.WML,就象HTML的 *.HTML后綴。

XML規定定義了一個規范的XML文件的規格。

任何違反這個規定的WML文件會出錯。

WML文件通常使用XML解釋器起來解釋。

建立網頁制作環境  WML文件本身就是文本文件,所以編輯不成問題,順手的編輯器都可以用。

當然,由于目前的瀏覽器還都不能顯示WML頁面,而我們又不能總在手機上進行測試(速度太慢),所以需要模擬器。

現在象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里了。

可是我們有時候還是希望當用戶按下后退鍵時依然能夠得到最新的數據。

如果終端總是不予驗證的話,那用戶只好找到主菜單再重新進入那個頁面。

  幸運的是,我們用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消息頭,然后用戶終端就可以據此對緩存進行控制了。

版權聲明:本文由 熊柔麗 整理編輯。

原標題:語言靜默期,語言運用

轉載注明出處:http://www.dn9ww09s.icu/basics/15155.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • asp日期函數,asp當前日期函數

    asp日期函數,asp當前日期函數 相關圖片asp字符串轉日期函數函數Astro(出生)阿斯特羅=出生=或不ISDATE(出生),然后退出函數出生=月(出生):如果asp提取年月的函數...

  • php日期比較,php一周前的日期

    php日期比較,php一周前的日期 相關圖片php獲取昨天日期本文主要介紹了在PHP上獲取本周星期一具體日期的方法,包括PHP對日期的操作技巧。它具有很強的實用價值。感興趣的朋友可以將代碼片段集成到自己的日期類中,以便...

  • 數據庫語法,數據庫基本語法

    數據庫語法,數據庫基本語法 相關圖片sql數據庫自學一。access數據庫無DSN連接方式:set adocon=server。創建對象(ADODB。連接)adocon。Opendriver={Microsoftoracle數據庫入門...

  • 如何訪問數據庫,數據庫訪問

    如何訪問數據庫,數據庫訪問 相關圖片數據庫有哪些現在有很多新的JSP用戶經常問如何連接數據庫,如何出錯?所以我把重點放在這篇文章上供你參考。實際上,將所有的數據庫邏輯都放在JSP中并不是一個好方法,但是對于...

  • asp與html,asp比html多了哪些

    asp與html,asp比html多了哪些 相關圖片html運行asp代碼如下:函數gethttpxml()set HTTP=server.createobject(msxml2)。服務器xmlhttp)dim lresolve、html改成asp...

  • 你能干大事,人能干啥

    你能干大事,人能干啥 相關圖片能干的人都是怎樣的PHP還能夠在PHP中做一些偉大的事情。本文主要介紹了在PHP中進行編譯碼的一些細節,這些細節在PHP中也能起到很大的作用。介紹了ASCII編解碼、URL編解碼太能干的人會...

  • 程序員成長之路,一個程序員的成長之路

    程序員成長之路,一個程序員的成長之路 相關圖片程序員上升之路一個常見的錯誤是將JSP視為簡化的Java,這是不可能的。(實際上,JSP是一個簡化的servlet)。程序員通常嘗試直接學習jsp而不學習所需的支持技能。JSJava工程師工資成長之...

  • shutdown用不了,shutdown

    shutdown用不了,shutdown 相關圖片運行shutdown本文主要介紹了語域的使用?關閉?函數在PHP中攔截致命錯誤示例。當我們在做這個項目的時候,你可以向我們的朋友請教,有時由于粗心大意會發生致命的錯誤。如果顯示錯...

  • jsp遍歷,jsp遍歷for

    jsp遍歷,jsp遍歷for 相關圖片jsp中迭代器遍歷數據如果foreach中的items類型是map或collection,如何使用增強for循環?首先,創建一個label處理器類并定義兩個屬性,string VaRjQuery遍歷li...

  • asp 代碼,asp開源代碼

    asp 代碼,asp開源代碼 相關圖片怎樣將asp源代碼這是一個簡單的ASP教程,添加數據代碼程序,接受用戶提交的數據,然后保存到數據庫教程非常方便,哦,讓我們看一個詳細的例子。例如,在“名稱”字段中輸入用戶...

熱評文章

  • 猴子稱大王,猴子大王

    猴子稱大王,猴子大王 相關圖片老什么不在猴子稱大王下面是一個如何在PHP中實現孫悟空選擇算法的例子。本文給出了一個在PHP中實現孫悟空選擇算法的實例。與您分享以供參考。具體分析如下:1。問題:n只猴子坐成...

  • php查詢mysql數據庫,php訪問mysql數據庫

    php查詢mysql數據庫,php訪問mysql數據庫 相關圖片mysql怎么建立數據庫具體如下:123456789101213141516171819202122232425262729331323343536373839404142434445php連接mysql數據庫代碼...

  • 高性能,高性能高可用

    高性能,高性能高可用 相關圖片高性能筆記本您的J2EE應用程序運行緩慢嗎?他們能承受不斷增加的交通量嗎?本文介紹了開發高性能、高靈活度的JSP頁面和Servlet的性能優化技術。它意味著盡可能快地構建用續航強高性...

  • 取整函數,保留整數的函數

    取整函數,保留整數的函數 相關圖片保留整數公式'函數名:getmytimenumber()'函數:生成時間整數'參數:LX--時間整數的類型'LX=0到分鐘LX=1到小時LX=2到天LX=3到月'返回值:生表格取整數公式...

  • 高性能,高性能高可用

    高性能,高性能高可用 相關圖片高性能筆記本您的J2EE應用程序運行緩慢嗎?他們能承受不斷增加的交通量嗎?本文介紹了開發高性能、高靈活度的JSP頁面和servlet性能優化技術。它意味著盡可能快地構建用戶續航強高性...

  • 在線人數統計,QQ在線人數統計

    在線人數統計,QQ在線人數統計 相關圖片奇趣統計騰訊在線人數有三種方法可以防止重復在線,并計算在線人數:1。通過數據庫記錄。使用ServletContext類型的應用程序。使用會話。第一種方法很簡單,但會給數據庫帶來負擔微...

  • 數據庫語法,數據庫基本語法

    數據庫語法,數據庫基本語法 相關圖片sql數據庫自學一。access數據庫無DSN連接方式:set adocon=server。創建對象(ADODB。連接)adocon。Opendriver={Microsoftoracle數據庫入門...

  • php遍歷,php實現文件的遞歸遍歷

    php遍歷,php實現文件的遞歸遍歷 相關圖片php遍歷關聯數組具體情況如下:12345678910121314151617181920212223242526272933132334353637383940414243?Pphp遍歷百萬級數組...

  • spring中bean,bean中list

    spring中bean,bean中list 相關圖片spring中bean的生命周期1.包:包beanpackage;/***@authorlucier*/publicclassSystemPRoperties{publicStringgetRbean在編程中的意思...

  • 鍵值對數組,js鍵值對數組

    鍵值對數組,js鍵值對數組 相關圖片PHP 數組本文的示例描述了PHP如何使用post數組的鍵值創建同名變量并分配值。與您分享以供參考。具體如下:該代碼可以根據post數組的鍵值自動創建同名變量。這個函數使用js合并數組為...

關注微信

变脸官网查询