JSP技术在WAP开发中的应用
|
JSP技术在WAP开发中的应用 11.6.1 基本规则 为了测试和浏览JSP实现的WAP应用,还需要安装WAP模拟器(浏览器),如Nokia WAP Toolkit,并安装Java Runtime Environment (JRE) 1.2.2或以上版本。 完成以上准备工作之后,就可以按照以下的基本规则使用JSP编写WML程序了。 (1) WML的标签和语句均可直接写在JSP程序中。 (2) 如果想使用JSP来处理WML的标签和语句,则需要使用“<%”和“%>”引起来,格式为: ……(JSP编写的WML语句行); %> out.println("Hello from script code!<br/>"); out.println("</p>"); JSP对象.方法/关键字(" ……WML标签或语句行 "); 例如,下面就是反映JSP书写WML语句格式的例子: (4) WML的文件类型可以使用JSP的response对象进行声明,也可以在声明页面语言时一块儿声明,它们的格式分别如下: 或 <%@ page language="java" contentType="text/vnd.wap.wml" %> (5) 最后的程序文件保存时要采用“.jsp”的扩展名,即保存为JSP的程序文件。JSP将被编译成Java源文件,最后成为servlet。 了解了以上基本规则,我们下面给出一个利用JSP向WAP浏览器显示“Hello from script code!”信息的简单程序,通过该程序大家可以进一步认识利用JSP开发WML页面的具体方法。 <!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> <do type="accept"> <go href="index.jsp#test"/> </do> <p>JSP Test:<br/> Press accept to continue!<br/> </p> </card> <prev/> </do> <% out.println("<p>"); out.println("Hello from script code!<br/>"); out.println("</p>"); </card> </wml>
程序中动态的约会数据是通过Java Bean的实例来取得的,具体过程其实是通过JDBC连接到数据库的过程。取消约会的操作是通过servlet实现的。由于用户可能随时取消某个约会,所以我们需要对pick_appointment.jsp页面进行定时刷新。下面我们就给出这一应用程序的源程序。
<%@ page language="java" contentType="text/vnd.wap.wml" %> <jsp:useBean>
<%! // 下面创建针对每次约会的选项<option>元素 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 = ""; %>
<%-- WML内容开始 --%> <%= strXMLPrologue %> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> <wml> <card> <!-- 每分钟刷新一次卡片组 --> <onevent type="ontimer"> <go href="pick_appointment.jsp"/> </onevent>
<timer value="600"/> <!-- 回显卡片 --> <do type="prev"> <prev/> </do> <p> <select title="Appointments"> <%= getOptions(appointmentBean) %> </select> </p> </card> </wml> <%-- WML内容结束 --%> show_appointment_data.jsp页面文件的程序代码如下: <%@ page language="java" contentType="text/vnd.wap.wml" %> <% // 使用request对象的方法获取"id"参数的值 int intAppointmentID = Integer.parseInt(request.getParameter("id")); %> <%! String strXMLPrologue = ""; %>
<%= strXMLPrologue %> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> <wml> <card> <p align="center"> </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> <!--设置向服务器发送输入数据的选择项 --> <do type="accept"> <go href="/servlet/ProcessCheckOff" method="post"> <postfield> </go> </do> <input> </p> <p> <br/> <a href="http://localhost:8080/pick_appointment.jsp">Back to appointments list</a> </p> </card> <%-- WML内容结束 --%> 源代码网供稿. |
