wml+jsp開發手機網站

 
wml+jsp開發手機網站
2010-06-05 14:42

最近在做一個手機網站,頁面很簡單主要就是後能的功能,用到了wml我不知道用wml能不能做出很漂亮的頁面(當然這個似乎不實用,手機站有時候要的是功能,流量問題還是要考慮一下,而且手機屏幕的大小差別太多,在不同的手機上瀏覽效果也不一樣),不過看他的說明好像對圖片的支持不是很好吧(沒仔細看= =),我用的是tomcat的服務器JSP做的後臺與前臺做交互,這裏遇到了一些問題,我覺得是剛接觸wml+jsp的人容易遇到的問題,現在總結一下,也許對別人有幫助,也留着當個筆記。

首先大家可以到網上找找wml的教程看下,瞭解下這門語言,要學懂不難,我就不多說了!這裏用jsp做後臺所以我用的是Tomcat的服務器,tomcat5.0以上的版本對wap網站就已經默認支持了,我們不用多設置什麼來說下頁面,雖然我們用的是wml的語言但是爲了在頁面上動態的顯示數據所以要在頁面中插入jsp的代碼,這樣前臺頁面我們就不能存儲爲.wml格式的了,要以.jsp後綴保存,剛開始我還在想這樣在手機上會不會無法瀏覽,其實這個jsp頁面最後輸出的還是標準(前題你要寫標準)的wml標籤,來看個例子:

wml.jsp頁面:

<?xml version="1.0" encoding="utf-8" ?>  
<%@ page contentType="text/vnd.wap.wml; charset=utf-8"%>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
http://www.wapforum.org/DTD/wml_1.1.xml">  
<wml>
<head>
   <meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
   <meta http-equiv="Cache-Control" content="no-cache"/>
</head>
<card id="Home" title="測試">
<p align="center">
   尊敬的用戶,歡迎您
</p>
<%String uname1=request.getParameter("uname1"); %>
<p><%=uname1 %></p>
<p>
<input type="text" name="uname" size="8" value="" />
<anchor title="提交">提交
<go method="post" href="wml2.jsp" accept-charset="utf-8">
<postfield name="uname" value="$(uname)"/>
</go>
</anchor>
</p>
</card>
</wml>

將上面代碼存爲wml.jsp,上面的例子應該很好理解有不明白的建議先看下wml語言教程,這裏要注意一點<?xml version="1.0" encoding="utf-8" ?>   這句一定要在最開始,而且之前不能有空格或者製表符,否則手機無法解析。將上面的頁面放到tomcat下啓動tomcat服務器,輸入剛纔的頁面http://127.0.0.1:8080/test/wml.jsp 我的項目名是test,這裏還要說一下,我在網上找了好多模擬手機瀏覽器不過,效果都不怎麼樣,還有一些英文太多,我用的暈暈的(我英語太差)後來聽說Opera支持手機網站,就下了個發現的確不錯,上邊代碼的頁面:

可以看到這樣是可以瀏覽的,我們來右鍵看一下頁面源代碼:
<?xml version="1.0" encoding="utf-8" ?>  

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">  
<wml>
<head>
   <meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
   <meta http-equiv="Cache-Control" content="no-cache"/>
</head>
<card id="Home" title="測試">
<p align="center">
   尊敬的用戶,歡迎您
</p>

<p>null</p>
<p>
<input type="text" name="uname" size="8" value="" />
<anchor title="提交">提交
<go method="post" href="wml2.jsp" accept-charset="utf-8">
<postfield name="uname" value="$(uname)"/>
</go>
</anchor>
</p>
</card>
</wml>

可以看到wml.jsp最後輸入的這個頁面是個標準的wml頁面,所以支持手機瀏覽器的解析

在上面的輸入框內輸入數據提交,這時候就要考慮參數如果有中文的時候是否能正確接收的問題,可以看到wml.jsp頁面我設置的編碼格式都是utf-8所以按說可以傳中文來看下wml2.jsp:

<?xml version="1.0" encoding="utf-8"?>
<%@ page contentType="text/vnd.wap.wml; charset=utf-8" %>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
   <meta http-equiv="Cache-Control" content="max-age=0" forua="true" />
   <meta http-equiv="Cache-Control" content="no-cache" />
</head>
<card id="home" title="測試二">
<p align="center">顯示結果頁</p>
<%
request.setCharacterEncoding("utf-8");
String uname1=request.getParameter("uname");
String uname=new String(uname1.getBytes("ISO-8859-1"),"UTF-8");%>
<p><%=uname %></p>
<p>
<input type="text" name="uname1" size="8" value="" />
<anchor title="提交">提交
<go method="post" href="wml.jsp" accept-charset="utf-8">
<postfield name="uname1" value="$(uname1)"/>
</go>
</anchor>
</p>
</card>
</wml>

注意這裏有一 段很主要的代碼String uname=new String(uname1.getBytes("ISO-8859-1"),"UTF-8"); 這是用來轉換字符編碼格式的語句,最開始接收過來的都是亂碼,後來在查了好多資料才發現還要用這個語句轉換一下,好像是wml在跳轉的時候使用的是ISO-8859-1的字符編碼集,所以接收之後還要轉換一下才會變成utf-8的字符集,好我們來看一下wml2.jsp接收字符的頁面:

可以看到輸入的漢字可以正常的顯示出來,這是在頁面之間同樣的方法也可以和後臺交互,只要把<go method="post" href="wml.jsp" accept-charset="utf-8">裏的href的屬性改成後臺的servlet就可以了,不要忘了處理字符的問題,這個wml.jsp和wml2.jsp是可以互相傳值跳轉的,可以自己試一下字符編碼的問題。

就寫這麼多吧,我也剛接觸沒多久,只不過剛接觸的時候都有點暈,所以弄個入門級的文章,高手莫笑,有問題可以留言,我不一定能解決不過希望能和大家一直討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章