注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 网页制作 > 网页制作技巧 内容正文:构建动态 WAP 站点

构建动态 WAP 站点

发布时间:2006-06-15 14:47:09 来源:友佳学院 网友评论 0 条

  二十一世纪是信息的世纪,以IP技术为核心的Internet在全球范围内后的了空前规模的商业化应用,它几乎渗透到了人们生活的每一个角落,特别是以Web为核心的信息检索业务取得了巨大的成就。如今,要随时随地的获取信息,通过使用移动电话连上互联网将是一种非常可行的方案,而WAP就是实现这一方案的技术工具。现在,移动电话上网数量的增长速度要比PC上网数量的增长速度更快。这也就意味着不久以后,大多数新的移动电话都将配有WAP浏览器。 

  在现实生活中,为了能使人们随时随地的通过移动电话获取最新的股票行情信息,我们可以把WAP技术和后台的
数据库技术相结合,通过移动电话的WAP浏览器,把数据库中的股票当前行情显示给用户。我们的这套教程,就是用这样的一个实例程序,讲解了如何构建一个动态的 WAP 站点。当然,在数据库和数据来源方面,我们都做了很大的简化,只是祈祷一个讲清原理的作用,读者可以根据教程自己深入研究一下。 

Charpter 1 Server 端的设置 

  在这里,我们先用最为典型的IIS服务器作为例子: 

  为了使IIS支持WAP(WML)页面的发布,在IIS的Web站点的属性 / HTTP信息中设置WAP的MIME属性,添加如下的MIME类型: 

  扩展名   内容类型(MIME)   
  .wml    text/vnd.wap.wml   
  .wbmp    image/vnd.wap.wbmp   
  .wmlc    application/vnd.wap.wmlc   
  .wmls    text/vnd.wap.wmls   
  .wmlsc   application/vnd.wap.wmlsc   

  重启 IIS 使其支持 WAP 页面的发布。 

  如果你使用的是 Apache 作为Web服务器的话,找到conf/httpd.conf这个配置文件,然后在里面添上MIME类型。在httpd.conf中加入如下几行: 

  AddType text/vnd.wap.wml .wml 
  AddType image/vnd.wap.wbmp .wbmp 
  AddType application/vnd.wap.wmlc .wmlc 
  AddType text/vnd.wap.wmls .wmls 
  AddType application/vnd.wap.wmlsc .wmlsc 

  重启 Apache Server 使其支持 WAP 页面的发布。 

  这样,你的Server就支持 WAP(WML) 站点的发布了。 
Chapter 2 编写你的第一个 WML 页面 

  在上一章中,我们配置好了支持 wml 的服务器,现在,我们新建一个虚拟目录(例如 http://127.0.0.1/wml ),把我们编写的 wml 页面放在这个目录中发布。这样我们安装好 WAP 模拟器后,就可以输入 http://127.0.0.1/wap浏览自己做的 WAP 页面了。在这里我推荐大家使用 Nokia 的 WAP Toolkit 模拟器,这个比较真实。大家可以到 Nokia 的站点上去下载。 

  WML 其实是 XML 的一种特殊应用,让我们来看一个最简单的 WML 页面: 

以下是引用片段:
  <?xml version="1.0"?> 
  <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> 
  <wml> 
   <template> 
    <do type="options" label="back"> 
     <prev/> 
    </do> 
   </template> 
   <card id="card1"> 
     <p>Hello World !  
     </p> 
     <do type="accept" label="Start"> 
      <go href="#Welcome"/> 
     </do> 
   </card> 
   <card id="Welcome"> 
     <p>You are welcome!  
     </p> 
     <do type="accept" label="Back"> 
      <go href="#card1"/> 
     </do> 
   </card> 
  </wml>
 

  第一行是说明这个文件是 xml1.0 标准的。我们可以看到,<wml> 和 </wml> 括起了整个 WML 页面的内容,我们成为一个 DECK ,在这个 DECK 中,又可以分成几个 <CARD> 和 </CARD> 括起的内容。记住,一个WML页面只能有一个 DECK ,一个 DECK 中可以由一个或多个 CARD ,而手机的一次就只显示一个 CARD 中的内容。 

  以上面的这个页面为例,打开这个页面时,只显示 Hello World ! 和一个 Start 的超连接,选择 Start 这个超连接后,就跳转到 id 为 Welcome 的那个 CARD ,屏幕上显示 You are welcome! 和一个 Back 连接,选择 Back 连接,则又跳回一开始显示的 id 为 card1 的那个 CARD 。 

  在这里,起连接作用的是这段代码: 

以下是引用片段:
     <do type="accept" label="Back"> 
      <go href="#card1"/> 
     </do> 


  <do> 中的 label 项,则是连接显示的内容,而连接指向则由 <go href=> 来指定。href 的值以 # 开头的话,则是页面中的 CARD 名(类似于 HTML 中的锚的概念);如果 href 的只是一个页面的地址,例如 <go href="a.wml"/> 则这个连接将指向另一个 WML 页面。 

  WML 的语法是遵循 XML 的,可以说 WML 是 XML 的一个子集,XML 是 WML 的超集。 

  在 WML 中其他常用的元素有: 

以下是引用片段:
   <img src="1.wbmp" alt="1"/> 插入图像1.wbmp(在 WAP 中,只能使用 wbmp 格式的图像) 

   <option value="up" onpick="a.wml"> 选择,选中这一项后跳转到a.wml 

   <input type="text" name="id" format="*N"/> 
   <do type="accept" label="Check"> 
    <go href="fivedays.asp"> 
      <postfield name="id" value="$id"/> 
    </go> 
   </do> 
   上面的这一整段代码是一个表单,先由 <input> 标签负责将拥护输入的数字( format="*N" 只允许输入数字) ,放到变量 id 中,再当用户按下 Check 连接时,<postfield name="id" value="$id"/> 发生作用,把变量 id 中的值以 POST 方式传送给 fivedays.asp。$id 即代表变量 id 的值。这个连接相当于:fivedays.asp?id=$id 。 

  其他的一些常用的 WML 元素用户可以自行参考一下 WML 语法手册,在这里我就不多说了。
Chapter 3 数据库的输出 

  在我们的这个例子中,由于每支股票有价格,名字,号码等信息,所以要由一个数据库来保存维护。我们的主要功能有查询某股票的当前价位,五天来的收盘价,今天的涨降幅前五名,所以,数据库中除了每支股票的号码和名字外,还得有前四天来的收盘价及当前价格。考虑到值试举个例子而已,所以只设计了一个简单的数据库,名为money ,该数据库设计了一张表,名为stock,该表包含了以下属性:num(主键) , name , price1 , price2 , price3 , price4 , price5 , temp 。 分别表示股票号码,名字,前四天收盘价,前三天收盘价,前天收盘价,昨天收盘价,现在价格,现在相对于昨天的涨降幅(百分比)。我们输入了大约50支股票的信息。 

  根据查询的需要,需从数据库中找到相关的数据,我们采用ASP编程,用ODBC连接数据库money,设置的数据源名为money。下面以查询当前价格为例,说明怎样与数据库连接。 

以下是引用片段:
<% 
 number=Request.QueryString("id") 
 Set conn=Server.CreateObject("adodb.connection") 
 conn.Open"dsn=money;uid=;pwd=;database=money.mdb" 
 sql0="select num,name,price5 from stock where num='"&number&"'" 
 Set rs0=Server.CreateObject("adodb.recordset")  
 rs0.Open sql0,conn   
%> 

  上面的这段ASP代码相信大家都应该看懂了吧,这是一段查询代号为id的股票的纪录的代码。 

  考虑到返回给客户的WAP页面必须是当时的股票信息,所以我们必须通过后台程序读取当时的数据库中的数据,即时生成WAP页面(WML页面)返回给WAP客户。由于IIS本身支持ASP,而且ASP开发周期较小,所以采用ASP作为后台语言,生成WML页面,通过向客户端发送 WML的HTTP头实现向客户端传送WML页面。如下列程序所示: 

以下是引用片段:
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" http://www.wapforum.org/DTD/wml_1.1.xml > 
<wml> 
<card> 
………… 
</card> 
</wml> 


  注意:<% Response.ContentType="text/vnd.wap.wml" %>和<?xml version="1.0"?>之间不能有空格或空行。 

  由于 Nokia Toolkit 不支持中文,所以,所有的汉字都只能做字符的实体引用,因此,用ASP编写了一个c2u的函数,进行汉字和字符实体之间的转换,程序如下: 

以下是引用片段:
<% 
Function c2u(text) 
  For i=1 to Len(text) 
  c=Mid(text,i,1) 
  c2u=c2u&"&#x" & Hex(AscW(c)) & ";" 
  Next 
 End Function 
%> 

  要在WML中输出汉字的时候,只需 <%=c2u("中文字符")%> 即可。 

  在WML中,采用不同card间的跳转来实现功能选择的步骤。采用<postfield/>标记给ASP页面传递客户端的选择信息。在ASP程序中,使用 Request.QueryString("")来获得客户端传递来的信息。 

  下面就是完整的一个显示页面的例子: 

以下是引用片段:
<%@ LANGUAGE="VBScript" %> 
<% 
dim j 
j=0 
%> 
<% 
Function c2u(text) 
  For i=1 to Len(text) 
  c=Mid(text,i,1) 
  c2u=c2u&"&#x" & Hex(AscW(c)) & ";" 
  next 
 End Function 
%> 
<% 
 set conn=server.createobject("adodb.connection") 
 conn.open"dsn=money;uid=;pwd=;database=money.mdb" 
 sql0="update stock set temp=(price5-price4)/price4*100" 
 set rs0=server.createobject("adodb.recordset")  
 rs0.open sql0,conn 
 sql="select num,name,temp from stock where temp<0 order by temp ASC" 
 set rs=server.createobject("adodb.recordset")  
 rs.open sql,conn  
%> 
以下是引用片段:
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml> 

<card id="ShowCurrent"> 
<p> 
  <%=c2u("跌幅前五名:")%><br/> 
<% 
while j<5 and not rs.eof 
%> 
  <%=rs(0).Value%>-<%=c2u(rs(1).Value)%>&nbsp;<%=rs(2).Value%>% 
<br/> 
<% 
rs.movenext 
j=j+1 
wend 
%> 
</p> 
<do type="accept" label="<%=c2u("返回")%>"> 
 <go href="index.asp#Welcome"/> 
</do> 
<p align="center"> 
(c) 501 Studio, 2001<br/> 
All rights reserved ! 
</p> 
</card> 
</wml>  
<% 
rs.close 
%> 
相关文章
  • 谈WAP的体系与结构
  • 为Exchange Server安装WAP电子邮件网关
  • WAP网关服务器应用形式初探
  • 在PWS上建立WAP网站
  • 初试WAP之wml+ASP查询
【评论】【收藏本文】【打印】【关闭】
上一篇文章:设计之痛 比女人还麻烦的IE浏览器
下一篇文章:正则表达式在网页处理中的应用
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
网页设计配色基础:RGB与HSB
网页设计配色基础:RGB与HSB
淘宝网店“设计装修”技巧全攻略
淘宝网店“设计装修”技巧全攻略
我的地盘听我的 六大主流博客网站对比评测
我的地盘听我的 六大主流博客网站对比评测
推荐阅讯
  • 分析一下域名删除规律及域名状态解释
  • 网页技巧:如何在网页上实现音乐播放?
  • 用几行代码轻松搞定网页的简繁间转换
  • WAP建站 WML Script脚本程序设计(一)
  • Rss订阅对你的网站搜索表现有好处吗?
  • 虚拟主机应用中的常见术语及常见问题
  • 谈WAP的体系与结构
  • 博客火了,维客路在何方?
  • WAP手机上网设置指南
  • 自己动手制作网页活动菜单条
阅读排行
  • 1.淘宝网店“设计装修”技巧全攻略
  • 2.javascript函数库
  • 3.我的地盘听我的 六大主流博客网站对比评测
  • 4.WAP建站入门教程
  • 5.网页木马深度剖析以及手工清除
  • 6.WAP建站语言WML语法全接触
  • 7.好事喜事送上祝福 电子请柬随网拈来
  • 8.如何保存网页中的Flash文件?
  • 9.WAP建站WML语言语法基础
  • 10.介绍几款WAP网页制作工具(提供下载)
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载