wml+jsp开发手机网站

来源:互联网 发布:安徽师范大学网络教育 编辑:程序博客网 时间:2024/05/17 01:07
 
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是可以互相传值跳转的,可以自己试一下字符编码的问题。

就写这么多吧,我也刚接触没多久,只不过刚接触的时候都有点晕,所以弄个入门级的文章,高手莫笑,有问题可以留言,我不一定能解决不过希望能和大家一直讨论!

原创粉丝点击