WAP中的ASP技術
第四節:另一種預訂你電影票的方法
在上一節中,我講解了最基本的WAP和WML的概念,這一節我們就來看看ASP和WAP是如何結合的.
現在在奧斯陸,電影院提供了一種基於電話系統的來銷售門票,這個系統是很複雜的,還必須給使用者一些說明才能指導使用者買票,而且使用者還必須在報紙上找到某種電影的代碼,這個很煩,我們來介紹另一種方法。
這裡這將給你展示一個簡單的讓手機使用者訂票的WAP應用:一個肯定讓人叫好的服務。使用者不必記住那些煩人的代碼,他們能夠直接從菜單中選取電影和電影院,並且使用者也不需要認證。在這個例子中使用者被要求在電影開始前40分鐘交費,但是在真正的生活中,使用者同樣可以通過手機來結帳.
此應用程式想像的條件是一個電影能夠在同一時間在多個電影院上映,一個電影院不同的時間上演不同的電影。
這裡我沒有過多的考慮錯誤處理的問題,因為這不是本章節的重點,你喜歡你可以自己加上.
為了簡單,我使用了Access 97來做為資料庫,當然真正的系統不會用它了,其它的資料庫如SQL Server,也不必改動多少代碼.
資料庫圖表
資料庫圖表
.Movie 和Theater表是顯然需要的。Show表用於追蹤現在還有多少空位可以出售。
怎樣調試這個程式
為了訪問這個WAP服務,你需要一個WAP模擬器,這個程式主要是在Nokia Toolkit 1.2上調試,詳細情況請查看上一章節。
選擇電影
在list表中選擇一個電影:
這裡是代碼:
< !--#include file="conn.asp" -- >< % 'send the right MIME type
Response.ContentType = "text/vnd.wap.wml"
第一件事就是聲明wml,模擬器如何不在正確的地方聲明XML,它是不會接受WML的儘管Nokia 7110可以忽略這一點,但是不能保證其它的手機也行,所以你不得不做這事。同樣你也得設定好MIME類型。
< ?xml version="1.0"? >
< !DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml" >
< wml >
在進入下一個card以前會有一個閃爍的螢幕來顯示一個圖片WBMP一種新的格式。這個事件是由timer屬性決定的,這裡我們設定的時間為5秒.ontimer事件引發後將帶你去另一個card.(wmbp的photoshop外掛程式可以從網上免費下載).
< card id="splash" ontimer="#card1" title="Welcome to" > < timer value="50"/ >
< p align="center" >
< br / >
< img src="pix/logo.wbmp" alt="WAP movies"/ >
< /p >
< /card >
< card id="card1" title="choose a film" >
< %
sqlQuery = "SELECT [Movie_ID], [title] FROM Movie"
set rsMovies = conn.Execute(SQLquery)
:
% >
< p >
< select name='movie' >
< %
Do while not rsMovies.eof
response.write("< option value='" & rsMovies("Movie_ID") & "' >" & rsMovies("title") & "< /option >" & vbcrlf)
rsMovies.MoveNext
loop % >
< /select >
這一部分是本文的焦點。從資料庫中讀出需要的資料顯示出來,作為一個asp程式員,這個沒有什麼特別的,但是就是這個簡單的程式現在被用於一種全新的伺服器就顯得不一樣了。這也使得我更加認為在基於WML的商業站的網路編程asp更勝於Java servlet.
< small > < anchor title="next!" >Next
< go href="step2.asp" method="get" >
< postfield name="movie" value="$(movie)" / >
< /go >
< /anchor >
< /small >
< /p >
表單的提交也可以通過軟開關函數(do 和 anchor)來完成。在這裡,我是通過簡單的內嵌連結來完成的,因為我覺得這樣能夠使使用者感覺直觀和友好。Postfields大至和HTML中的hidden差不多,但是wml的變數不像html中的那樣需要在javascript中傳送,它可以直接寫在wml中,這一點上一節已經講解了.在這裡的傳遞的方法是get,post方法在WAP的規範也是被支援的,模擬器也能識別它,但是很不幸,在Nokia 7110中,這個post不被支援,所以你沒得選擇.