ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
上海网站建设 网站建设 域名注册 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg ACG玩家 品牌设计
求创科技
网站建设
中国互联
投稿
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 设计教程 >> WAP网站攻略 >> WAP建站入门教程

WAP建站入门教程 (12)

来源:中国设计秀    作者:    点击:2387     加入收藏    发表评论
0
顶一下
先看一个简单的例子程序:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<% response.setContentType("text/vnd.wap.wml"); %>
<wml>
<card id="start">
    <do type="accept">
        <go href="index.jsp#test"/>
    </do>
    <p>
        JSP Test:<br/>
        Press accept to continue!<br/>
    </p>
</card>

<card id="test">
    <do type="prev">
        <prev/>
    </do>
<%
    out.println("<p>");
    out.println("Hello from script code!<br/>");
    out.println("</p>");
%>
</card>
</wml>
    下面将要演示使用WML和Java Server API如何简单快速地在WAP终端上生成动态的WML页面。这里将不再去讲每个WML标记的作用,而是给出一个简单的例子。这个例子体现出整个语言的特点。
    这个JSP例子显示了为一个移动用户定时更新约会的例子,例如:做一个给家里打电话的应用程序。这个应用是在Windows NT下使用Java Server Web Development Kit(JSWDK)1.01和JSWDK配套的服务端工具,来建立的JSP页面。使用Nokia WAP Toolkit 1.2测试和浏览应用。
    一个典型的路径还包括在移动电话和WAP内容服务之间的一个WAP网关。这样安排的主要原因是要对WML进行编码,这样来适应其窄带的特点。但是Nokia WAP Toolkit包含了这样一个编译器,因此它可以直接从HTTP服务器提取WML内容(在例子里是从服务端工具上来取的)。
    当建立WAP应用的时候,必须记住一点。WAP设备的显示屏幕很小——典型的只有4行12个字符,不要使用过多的滚动。这样会使用户十分烦心。数据的输入功能也十分有限。而且设备的RAM有限,CPU的能力有限。并且现在无线网络的带宽有限而且高延时。因此WAP的应用程序应当短小,简单。
    应用程序包括两个页面。第一个是“pick_appointment.jsp”。它有一个选择卡片。当用户选择了其中的一个约会时间的时候,就会进入到“show_appointment_data.jsp”页面(中间还传递了约会的ID号)。第二个页面有两个卡片。第一个显示会面的时间,第二个显示数据输入,允许工程师通过输入ID取消约会。
    动态的约会数据是通过JavaBean的实例来取得的。在这里没有它的代码,总的来说是通过JDBC连接到数据库的过程。取消的过程是通过Servlet来操作的,在这里其程序也没有显示。既然用户可能随时取消某个约会,因此需要定时地刷新“pick_appointment.jsp”。
pick_appointment.jsp

<%@ page language="java" contentType="text/vnd.wap.wml" %>
<jsp:useBean id="appointmentBean" class="mwebber.samples.AppointmentBean" scope="application" />
<%!
   // This convenience method builds our <option> elements, one for each appointment.
    private String getOptions(mwebber.samples.AppointmentBean appointmentBean)
    {
        StringBuffer sb = new StringBuffer();
        int[] appointmentIDs = appointmentBean.getAppointmentIDs();
        for(int i=0; i<appointmentIDs.length; i++)
        {
            sb.append("<option onpick=\"show_appointment_data.jsp?id=");
            sb.append(i);
            sb.append("\">");
            sb.append(appointmentBean.getAppointmentTime(i));
            sb.append("</option>");
        }
        return sb.toString();
    }
%>
<%! String strXMLPrologue = "<?xml version=\"1.0\"?>"; %>
<%-- WML CONTENT BEGINS --%>
<%= strXMLPrologue %>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>
<card id="pick" title="Appointments">
    <!-- Refresh the deck every minute -->
    <onevent type="ontimer">
        <go href="pick_appointment.jsp"/>
    </onevent>
    <timer value="600"/>

    <!-- Display a widget to navigate back by one in the history stack -->
    <do type="prev">
        <prev/>
    </do>
    <!-- Display the "select" widget of appointments to pick -->
    <p>
        <select title="Appointments">
        <%= getOptions(appointmentBean) %>
        </select>
    </p>
</card>
</wml>
<%-- WML CONTENT ENDS --%>
show_appointment_data.jsp

<%@ page language="java" contentType="text/vnd.wap.wml" %>
<jsp:useBean id="appointmentBean" class="mwebber.samples.AppointmentBean" scope="application" />
<%
    // Grab the "id" parameter, using the in-built reference to the request object.
    int intAppointmentID = Integer.parseInt(request.getParameter("id"));
%>
<%! String strXMLPrologue = "<?xml version=\"1.0\"?>"; %>
<%-- WML CONTENT BEGINS --%>
<%= strXMLPrologue %>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>
<card id="main_data" title="Main Data">
    <p align="center">
        <b>
            <%= appointmentBean.getAppointmentTime(intAppointmentID) %>
        </b>
    </p>
    <p>
        <br/>
            <%= appointmentBean.getAppointmentDetails(intAppointmentID) %>
        <br/>
        <a href="#check_off">Check off this appointment</a><br/>
        <a href="http://localhost:8080/pick_appointment.jsp">Back to appointments list</a>
    </p>
</card>

<card id="check_off" title="Check Off">
    <!-- Set up a widget to send the input field data to the server -->
    <do type="accept">
        <go href="/servlet/ProcessCheckOff" method="post">
            <postfield name="check_off_code" value=" $check_off_code"/>
        </go>
    </do>
    <p>
        <input name="check_off_code" emptyok="false" maxlength="6"/>
    </p>
    <p>
        <a href="#main_data">Back to appointment data</a>
        <br/>
        <a href="http://localhost:8080/pick_appointment.jsp">Back to appointments list</a>
    </p>
</card>
</wml>
<%-- WML CONTENT ENDS --%>
    在每一文件的开头,都要设置正确的MIME文件类型。如果文件类型不对,那么这个页面将遭到模拟器的拒绝。在这个例子里,“text/vnd.wap.wml”表明是WML页面。其他类型例如“text/vnd.wap.wmlscript”是WMLScript源代码,而“image/vnd.wap.wbmp” 是WBMP文件。
    既然WML页面是一个XML文档,因此它包含了标准的XML文件头和一个DTD头,但是“<?”和“?>”标记显然与JSP的标记有混合。因此将这一段隐藏到字符串变量当中。别忘记JSP将被编译成Java源文件,最后成为Servlet。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]
2006-12-23 11:47:00    出处:yesky
Google
热点文章/相关文章

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口