第11章WAP编程与开发的高级技术.docx
- 文档编号:6519027
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:29
- 大小:35.80KB
第11章WAP编程与开发的高级技术.docx
《第11章WAP编程与开发的高级技术.docx》由会员分享,可在线阅读,更多相关《第11章WAP编程与开发的高级技术.docx(29页珍藏版)》请在冰豆网上搜索。
第11章WAP编程与开发的高级技术
第11章WAP编程与开发的高级技术
第11章WAP编程与开发的高级技术
本章讨论WAP编程与开发的高级技术,主要包括WAP页面中汉字与图像的使用问题、HTML过滤器和HTML页面向WAP页面的自动转换问题,以及结合使用WAP编程语言与ASP、PHP、Perl、C、JSP、Servlet等技术开发动态WAP页面的高级方法。
本章涉及的技术知识比较多,读者需要具备ASP、PHP、Perl、C、JSP、Servlet以及Web数据库等方面的基础。
这些方面的内容比较多,本书不可能详细讲解,我们只是围绕WAP的WML编程,讲解应用这些开发工具的方法。
更深入的应用和开发工作还有待读者去探索和实现。
11.1汉字与图像的使用问题
前已论述,在WAP网页中可以使用汉字和图像,但由于WAP的客户端设备具有内存少、屏幕小的特点,所以应用汉字和图像时必须进行适当的处理。
下面我们就介绍具体的处理方法。
11.1.1汉字使用与字符集转换
目前,由于WAP技术及其应用还没有完全成熟,不同的系统,不同的WAP服务器和WAP客户端设备执行的标准在细节上可能有所出入,所以WAP文件的编码方式、微型浏览器所支持的编码方式、服务器和微型浏览器的相关设置以及开发系统所支持的编码方式等都有可能存在一些差异。
因此,当在WAP开发中,比如WML编写的页面中使用汉字的时候,一方面我们需要设置服务器和浏览器的配置,使之支持汉字字符集,另一方面我们需要对汉字字符集进行转换,转换成绝大多数WAP服务器、微型浏览器所支持的字符集(如UTF8或UNICODE)或编码类型。
现在,使用最普遍的汉字字符集是GB2312,那么我们为了顺利地在WML编程和WAP页面浏览中使用汉字,就需要进行以下工作:
(1)在为WAP服务器中设置文件类型的MIME表时,可在“text/vnd.wap.wml”后加上“;charset=charset_name(字符集名称)”的内容。
比如,若使用GB2312汉字字符集,则可输入wml文件的内容类型为“text/vnd.wap.wml;charset=gb2312”,这样就可使WAP服务器支持符合字符集GB2312的汉字。
(2)在设计WAP网页时,可在程序中为返回类型指明汉字使用的字符集,即将charset加在向用户浏览器发送信息的类型后,比如使用GB2312的字符集,则可按以下方式写出程序代码:
“Content-type:
text/vnd.wap.wml;charset=gb2312”(不包括引号)。
如果使用ASP、PHP等技术编写WML程序,则可在相应的ContentType脚本语句的最后加上“;charset=gb2312”,指定汉字字符集。
(3)使用专门的字符转换工具来转换,将编写的WML、WMLScript或HDML的程序代码转换为UTF8或UNICODE的编码。
目前Internet有许多站点提供有WAP编程中所需的字符转换工具或控件,不仅可以转换汉字,而且还可以转换繁体中文、韩文、日文等其他字符集。
例如,www.WapS和www.BookingA提供有一个可免费下载的小巧玲珑、简单而又功能强大的字符集转换工具converter.class,它可以将使用汉字的WAP程序转化为任何类型的字符集。
读者从本书所随光盘中也可以找到该转换工具。
它使用Java语言编写,采用的是命令行执行方式,安装时需要将converter.class文件复制到所用系统的CLASSPATH目录中。
该工具软件可在任何平台运行。
它的用法如下:
javaconverterfilenameconvertingType
其中,filename是需要转换的文件名,convertingType是要转换的目的字符集类型。
例如,我们需要将WML程序文件mytest.wml转换成unicode或UTF8编码字符集,则可分别使用如下命令:
javaconvertermytest.wmlUnicode
javaconvertermytest.wmlUTF8
当然,用户所用机器系统中需要有JavaRuntimeEnvironment环境,本书所随光盘提供了JavaRuntimeEnvironment1.1,读者可以安装该软件进行测试。
11.1.2图像使用与图像格式转换
WAP网页只支持1位的bmp位图,即单色的bmp图像,普通图像不能直接应用到WAP页面中,需要使用一些专门的工具软件进行格式转换,将图像转换为WAP支持的wbmp格式,然后才能应用到WAP页面中。
目前Internet上也有许多站点提供了这类转换工具的免费下载服务,例如,大家可以到http:
//wap.gingco.de或http:
//www.gingco-newmedia.de去下载一个名为pic2wbmp的软件控件,它能够将其他类型的图像转换为WAP支持的wbmp格式。
本书随书光盘中提供了该软件,可供大家使用。
转换图像格式的操作方法很简单。
首先启动pic2wbmp,命令方式为:
java-classpath.;pic2wbmp.zip;JimiProClasses.zip;%CLASSPATH%pic2wbmp
或者使用pic2wbmp软件包提供的批处理文件pic2wbmp.bat,也可启动pic2wbmp。
接下来,从pic2wbmp运行后的窗口中单击“Browse”按钮,并从出现的对话框中选择想要转换的图像文件,然后返回到pic2wbmp窗口,从菜单中选择“SaveWBMPas”命令,即可将当前选中的图像文件另存为WBMP格式的文件。
这种文件的扩展名为“.wbmp”。
pic2wbmp也需要JavaRuntimeEnvironment1.1或更新版本的支持,用户所用系统中必须安装JavaRuntimeEnvironment。
本书所附光盘中提供了这一软件,供大家使用。
将所需的图像文件转换为wbmp格式后,就可以把它应用到WAP网页中来了,具体用法我们在讲WML、WMLScript及HDML编程时已经介绍过,这里不再重述,大家可以参考前面的相关内容。
11.2ASP和数据库技术在WAP开发中的应用
利用ASP技术可以开发出动态WAP页面,将ASP技术和数据库技术相结合,则可以开发更为复杂的WAP应用。
有关ASP和Web数据库的知识请读者参考专门书籍,我们这里以WML为例,说明ASP和数据库技术在WAP开发中的应用。
11.2.1在WML程序中使用ASP
在WML程序中使用ASP的规则很简单,只要做到以下5条即可:
(1)声明ASP采用的脚本语言。
与ASP中声明的方式类似,格式为:
<%@Language=VBScript%>
(2)声明wml文件类型。
这可采用ASP的Response对象,并将ContentType作为它的方法,书写时使用<%和%>包含起来,格式为:
<%Response.ContentType="text/vnd.wap.wml"%>
(3)在WAP服务器端,增加服务器对ASP的处理能力。
这可在IIS中选中WAP站点或其主目录,并单击鼠标右键,从出现的菜单中选择“属性”命令,打开它的对话框,选择其中的“虚拟目录”选项卡。
这里面有一项应用程序设置,将“许可”一项设置为“执行(包括脚本)”即可。
更详细的方法可参考我们第4章的内容。
(4)其余语句和形式采用WML的编程方法即可。
(5)程序文件保存时要采用“.asp”的扩展名。
例如,下面就是一个在WML程序中应用ASP的简单例子:
<%@Language=VBScript%>
<%Response.ContentType="text/vnd.wap.wml"%>
xmlversion="1.0"?
>
DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN""http:
//www.wapforum.org/DTD/wml_1.1.xml">
Hello!
这是一个显示“Hello!
”的程序,可把它保存为hello.asp。
注意,文件扩展名一定是.asp才行,它与hello.wml是两个不同的文件。
我们可以把该文件放到或上传到WAP服务器的相应目录中,比如wap目录。
然后,我们启动模拟浏览器,比如WinWap,并在URL栏里输入“http:
//127.0.0.1/wap/hello.asp”并按回车,即浏览使用ASP的WML页面的效果。
11.2.2在ASP中编写WML程序
我们也可以直接在ASP程序中编写WML程序,并可把它输出为WML程序。
具体的处理规则如下:
(1)将WML程序使用<%和%>包含起来,格式为:
<%
……(语句)
%>
(2)声明wml文件类型。
与前面讲述的方法相同,可采用ASP的Response对象,并将ContentType作为它的方法,但书写时不再需要使用<%和%>。
格式为:
Response.ContentType="text/vnd.wap.wml"
(3)对于其他的WML语句,一律采用Response对象的write方法来处理。
基本格式为:
Response.write("……(WML标签或语句)")
其中的“WML标签或语句”在write方法中可以连写,以节省程序代码行。
(4)在WAP服务器端,增加服务器对ASP的处理能力。
操作方法与前面介绍的一样,这里不再重述。
(5)程序文件保存时也要采用“.asp”的扩展名。
下面的程序就是在ASP中编写WML页面的简单例子:
<%
'msg="Hello"
Response.ContentType="text/vnd.wap.wml"
Response.write("
xmlversion=""1.0""?
>
DOCTYPEwmlPUBLIC""-//WAPFORUM//DTDWML1.1//EN""""http:
//www.wapforum.org/DTD/wml_1.1.xml"">")
Response.write("
Response.write("hellowml!
testok!
")
Response.write("
")%>
当然,我们这里给出的属于ASP与WML结合使用的简单例子,但采用这种基本方法,并利用ASP的复杂功能,便可以开发出能够实现丰富功能的WML页面。
例如,下面的ASP程序不仅可以显示“Hello”信息,同时可以显示信息的来源地或所在环境,这是通过利用Request对象的ServerVariables方法来获取服务器的HTTP_X_UP_SUBNO和HTTP_X_UP_UPLINK两个变量实现的。
程序代码如下:
<%
'hellowml.asp
'
Dimmsg,subId,uplink
msg="Hello"
subId=Request.ServerVariables("HTTP_X_UP_SUBNO")
uplink=Request.ServerVariables("HTTP_X_UP_UPLINK")
IfNotLen(subId)=0Then
msg=msg&"from"&subId
EndIf
IfNotLen(uplink)=0Then
msg=msg&"at"&uplink
EndIf
Response.ContentType="text/vnd.wap.wml"
Response.write("
xmlversion=""1.0""?
>
DOCTYPEwmlPUBLIC""-//WAPFORUM//DTDWML1.1//EN""""http:
//www.wapforum.org/DTD/wml_1.1.xml"">")
Response.write(" ") Response.write(msg) Response.write("
%>
为增强大家对ASP编写WML程序的印象,我们再给出P提供的一个例子。
该例的作用是根据对服务器和客户端设置测试结果的不同,给出不同的警告信息。
程序代码如下:
<%
'pushAlert.asp
'
Dimuplink,subId,url,ttl,alertType,title
DimcontentType,lastResult
contentType="application/x-up-alert"
uplink=Request.ServerVariables("HTTP_X_UP_UPLINK")
subId=Request.ServerVariables("HTTP_X_UP_SUBNO")
url="
ttl=3600
alertType="D---"
title="Call:
"&subId
SetNtfyCl=Server.CreateObject("Ntfn3Client.Ntfn3Client.1")
NtfyCl.NtfnSetHostuplink
NtfyCl.NtfnSetTimeoutttl
NtfyCl.NtfnPostAlertsubId,url,ttl,alertType,title
lastResult=NtfyCl.NtfnGetLastResult
DimerrString,msg
IflastResult<>0Then
errString=NtfyCl.NtfnGetErrorDetail
IferrString<>NULLThen
msg=errString
Else
msg="Noerrordetail,errornumber:
"&lastResult
EndIf
Else
msg="Sentalertto"&subId&"at"&uplink
EndIf
Dimmy,digestString
setmy=Server.CreateObject("PDCDigestUtils.CPDCDigest")
my.DeckType=0
my.DigestAddDeck"deck1"," "&msg&"
my.DigestSuppressContentType1
digestString=my.DigestSerialize(0)
Response.ContentType=my.DigestGetContentType
Response.BinaryWrite(digestString)
%>
为便于大家学习,我们本书所附光盘中都提供了这些程序的源代码,大家不要忘了实际测试一下。
11.2.3利用ASP在WML中实现动态数据库应用
通过前面介绍的例子,我们可以看出利用ASP技术可以为WML实现非常复杂的应用。
我们知道,ASP的数据库处理能力是很强的,所以,利用ASP我们可以在WML中实现动态的数据库应用。
由于举例说明这种应用需要占用很大的篇幅,所以我们这里只给出基本的开发步骤:
第一步,分析WAP的实际问题,设计出所需的数据库,并建立其中的数据表。
例如,我们可以使用MicrosoftAccess等数据库系统来完成这一方面的工作。
第二步,建立ODBC源,并对上述数据库进行命名。
操作方法十分简单:
以Windows95/98/NT/2000为例,我们只需在“控制面板”中双击“ODBC数据源”图标,从打开的“ODBC数据源管理器”对话框中即可完成相关操作。
第三步,根据实际问题,编写引用和处理数据库的ASP/WML程序。
第四步,将程序上载到WAP服务器,随后就可以进行测试。
通过测试后,就可以为WAP用户使用了。
11.3PHP编程在WAP开发中的应用
我们可以使用PHP来编写WAP程序,比如开发动态的WML页面,不过条件是需要将输出的标签或语句限制在WAP微型浏览器可接受的范围之内。
而且,PHP还可以在一个HTML(及HDML)文件中编写出既适合于HTML(及HDML),也适合于WML的内容。
PHP的源代码对于WAP客户端来说是不可见的,所以我们可以针对HTML浏览器输出HTML页面,而针对WAP浏览器输出HDML页面或WML页面。
11.3.1基本规则
以WML为例,使用PHP编写WML程序的基本规则如下:
(1)使用“
”和“?
>”来包含PHP编写的WML程序行,格式为:
……(程序行);
?
>
(2)程序行语句均以分号(;)结尾,这是与ASP编写WML程序不同的地方。
(3)使用PHP的header关键字来声明WML的文件类型,基本格式为:
header("Content-type:
text/vnd.wap.wml");
上述格式是专为WAP浏览器识别而采取的书写格式。
如果开发中用户想使用普通的浏览器,如IE浏览器来测试程序效果,则可在该语句的前面加上双斜线(//),格式为:
//header("Content-type:
text/vnd.wap.wml");
这样,基于PC的浏览器将忽略程序中无法理解的WML标签,这时当前的程序实际上成为了HTML页面。
当想在WAP设备或者模拟器上测试的时候,只需要去掉“//”,当前页面就会自动变成WML页面。
(4)其他WML标签和语句行一律使用PHP的echo关键字来声明,每个WML行的后面加上换行符“\n”(根据需要,也可加多个)。
其基本格式为:
echo("……(WML标签和语句行)\n");
例如,下面的语句就是PHP编写WML语句行的典型例子:
echo("
xmlversion=\"1.0\"?
>\n");
而且,echo语句中的“WML标签和语句行”可以连写,以节省程序代码行。
例如,下面的一行语句就连写了WML的3行标签语句:
echo(" "); (5)声明脚本语言。 这是对PHP编程的继承,向编译器声明当前程序采用的脚本语言为PHP,格式为: 不过这一句可以省略,因为编译器能够自动识别PHP的脚本程序。 (6)文件最后保存时采用的扩展名为“.php”或“.php3”,而不是“.wml”等扩展名。 根据上述规则,我们可以用PHP编写出WML页面的文件头,并让程序在WAP浏览器中显示“Hello,World! ”,代码如下: header("Content-type: text/vnd.wap.wml"); echo(" xmlversion=\"1.0\"? >\n"); echo(" DOCTYPEwmlPUBLIC\"-//WAPFORUM//DTDWML1.1//EN\"\"http: //www.wapforum.org/DTD/wml_1.1.xml\">\n\n"); ? > echo(" \n"); echo("Hello,World! \n"); echo(" ? > 11.3.2程序举例 下面我们给出一个非常有用的PHP实现的WML应用,它称为PizzaCalc,可以将根据输入的pizza帐单及人数,算出每个人的花费。 注意程序中根据WML的规则,对一些特殊符号,如双引号等使用了转义字符。 该程序不仅可以进行变量处理,而且还可以传递相应的参数。 程序代码如下: //pizzacalc.html header("Content-type: text/vnd.wap.wml"); echo(" xmlversion=\"1.0\"? >\n"); echo(" DOCTYPEwmlPUBLIC\"-//WAPFORUM//DTDWML1.1//EN\"\"http: //www.wapforum.org/DTD/wml_1.1.xml\">\n\n"); ? > echo(" ? > if($action=="calc"){ echo(" echo(" echo(" echo("\n"); echo(" \n"); echo("Thecostpereaterwillbe".$total/$eaters." } else{ echo(" echo(" \n"); echo(" total=\$(total)&eaters=\$(eaters)&action=calc\"/> echo(" echo("Totalcost: echo("Eaters: } ? > echo("
\n");
\n");
?
>
11.4Perl与WAP的综合应用
使用Perl也可生成WAP页面和开发出复杂的WAP应用。
我们还是以WML为例来说明Perl在WAP开发中的具体应用。
当然,用户首先应当配置好自己的系统,使之能够运行Perl,而且还要具有CGI的基本知识,了解Perl的语法。
11.4.1基本规则
使用Perl编写WML程序的基本规则如下:
(1)程序行语句均以分号(;)结尾,这是与PHP编写WML程序一致的地方。
(2)使用print语句来声明WML的文件头信息,并在WML行后面加上换行符“\n”。
基本格式为:
print"……(WML标签或语句行)\n";
声明WML文件头信息的Perl代码为:
print"Content-type:
text/vnd.wap.wml\n\n";
print"
xmlversion=\"1.0\"?
>\n";
print"
DOCTYPEwmlPUBLIC\"-//WAPFORUM//DTD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第11章 WAP编程与开发的高级技术 11 WAP 编程 开发 高级 技术