zoukankan
html css js c++ java
JSP技术在WAP开发中的应用
按照以下的基本规则使用JSP编写WML程序了。
(
1
) WML的标签和语句均可直接写在JSP程序中。
(
2
) 如果想使用JSP来处理WML的标签和语句,则需要使用“
<%
”和“
%>
”引起来,格式为:
<%
……(JSP编写的WML语句行);
%>
例如,以下几行语句就是利用JSP的out.println来输出WML的标签和语句:
<%
out.println(
"
<br>
"
);
out.println(
"
Hello from script code!<br/>
"
);
out.println(
"
</p>
"
);
%>
(
3
) JSP编写的WML语句要用引号(
"
"
)引起来,然后再用括号括起来,而且后面还要加上分号( ; ),格式为:
JSP对象.方法
/
关键字(
"
……WML标签或语句行
"
);
例如,下面就是反映JSP书写WML语句格式的例子:
out.println(
"
Hello from script code!<br/>
"
);
(
4
) WML的文件类型可以使用JSP的response对象进行声明,也可以在声明页面语言时一块儿声明,它们的格式分别如下:
<%
response.setContentType(
"
text/vnd.wap.wml
"
);
%>
或
<%
@ 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
>
<
card
>
<
do
type
=
"
prev
"
>
<
prev
/>
</
do
>
<%
out.println(
"
<p>
"
);
out.println(
"
Hello from script code!<br/>
"
);
out.println(
"
</p>
"
);
%>
</
card
>
</
wml
>
程序举例
我们下面利用JSP和WML实现一个为移动用户定时更新约会的例子。该例的应用程序共包括两个页面。第一个页面的文件是pick_appointment.jsp,它提供了一个选择卡片,当用户选择了其中某一个约会时间时,浏览器就会带着本次约会的ID号进入到第二个页面,即文件名为show_appointment_data.jsp的页面。我们在第二个页面编写了两个卡片,其中第一个卡片用于显示会面的时间,第二个卡片用于显示数据输入,让用户通过输入ID而取消约会。
程序中动态的约会数据是通过Java Bean的实例来取得的,具体过程其实是通过JDBC连接到数据库的过程。取消约会的操作是通过servlet实现的。由于用户可能随时取消某个约会,所以我们需要对pick_appointment.jsp页面进行定时刷新。下面我们就给出这一应用程序的源程序。
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
>
<!--
为要选择约会而显示
"
select
"
-->
<
p
>
<
select title
=
"
Appointments
"
>
<%=
getOptions(appointmentBean)
%>
</
select
>
</
p
>
</
card
>
</
wml
>
<%--
WML内容结束
--%>
show_appointment_data.jsp页面文件的程序代码如下:
<%
@ page language
=
"
java
"
contentType
=
"
text/vnd.wap.wml
"
%>
<
jsp:useBean
>
<%
//
使用request对象的方法获取"id"参数的值
int
intAppointmentID
=
Integer.parseInt(request.getParameter(
"
id
"
));
%>
<%!
String strXMLPrologue
=
""
;
%>
<%--
WML内容开始
--%>
<%=
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
>
<%=
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
>
<!--
设置向服务器发送输入数据的选择项
-->
<
do
type
=
"
accept
"
>
<
go href
=
"
/servlet/ProcessCheckOff
"
method
=
"
post
"
>
<
postfield
>
</
go
>
</
do
>
<
p
>
<
input
>
</
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内容结束
--%>
Servlet技术在WAP开发中的应用
WAP开发中应用Servlet技术时要利用专用WAP服务器软件,如Nokia WAP Server等提供的开放程序接口来编写具体的程序。
我们仍以WML为例,它应用Servlet编程的规则与应用JSP时的规则基本相同,我们不再逐条给出解释。
通过下面的简单例子,结合JSP的编写规则,大家不难了解Servlet编写WML页面的基本规则:
import
java.io.
*
;
import
javax.servlet.
*
;
import
javax.servlet.http.
*
;
public
class
WapServlet
extends
HttpServlet
{
protected
void
service(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, java.io.IOException
{
response.setContentType(
"
text/vnd.wap.wml
"
);
PrintWriter out
=
response.getWriter();
xmlHeader(out);
out.println(
"
<wml>
"
);
out.println(
"
<card title = \
"
JavaTest\
"
>
"
);
out.println(
"
<p>Hello! This comes from a servlet!</p>
"
);
out.println(
"
</card>
"
);
out.println(
"
</wml>
"
);
}
public
void
xmlHeader(PrintWriter out)
{
out.println(
"
<?xml version=\
"
1.0
\
"
?>
"
);
out.println(
"
<!DOCTYPE wml PUBLIC \
"
-
//
WAPFORUM
//
DTD WML 1.1
//
EN\" "+
"
\
"
http:
//
www.wapforum.org/DTD/wml_1.1.xml\">");
}
}
下面我们给出一个简单的Servlet程序,它可在WAP浏览器上显示“The simple HelloWorld servlet.”的信息。程序清单如下:
import
java.io.
*
;
import
javax.servlet.
*
;
import
javax.servlet.http.
*
;
public
class
HelloWorld
extends
HttpServlet
{
String m_text;
public
void
init(ServletConfig config)
throws
ServletException
{
super
.init(config);
m_text
=
config.getInitParameter(
"
text
"
);
if
(m_text
==
null
)
{
m_text
=
"
This is a simple test servlet.
"
;
}
}
public
void
doGet(HttpServletRequest request,HttpServletResponse response)
throws
IOException, ServletException
{
PrintWriter out
=
response.getWriter();
out.println(
"
<?xml version=\
"
1.0
\
"
?>
"
);
out.println(
"
<!DOCTYPE wml PUBLIC \
"
-
//
WAPFORUM
//
DTD WML1.1
//
EN\"\"
http://www
. wapforum.org/DTD/wml_1.1.xml/">");
out.println(
"
<wml>
"
);
out.println(
"
<card id=\
"
card1\
"
title=\
"
Hello World\
"
>
"
);
out.println(
"
<p>
"
);
out.println(m_text);
out.println(
"
</p>
"
);
out.println(
"
</card>
"
);
out.println(
"
</wml>
"
);
//
Remember to close the out object
out.close();
}
public
String getServletInfo( )
{
return
"
The simple HelloWorld servlet.
"
;
}
}
查看全文
相关阅读:
安装nginx
查看Linux内核
Python学习总结11:获取当前运行类名和函数名
Python学习总结10:获取shell输出结果
Python学习总结9:目录操作方法汇总
Python学习总结8:文件模式及操作方法汇总
Python学习总结7:随机字符串和随机数
Python学习总结6:字符串格式化操作及方法总结
Python学习总结5:数据类型及转换
Python学习总结4:字符串常量与操作汇总
原文地址:https://www.cnblogs.com/bluespot/p/1250350.html
最新文章
【学习笔记】【C语言】三目运算符
【学习笔记】【C语言】逻辑运算符
【学习笔记】【C语言】关系运算符
Spring3 @ResponseBody注解引起头部Accept-Charset过大 zj_oschina
IE11打不开
内核
APIcloud学习笔记
java随机数类Random类
UUID.randomUUID()生成唯一识别码
WebLogic时控制台输出中文乱码解决方法
热门文章
eclipse + weblogic 安装
clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
Keepalived虚拟ip
nginx配置负载
本地Yum
rsync实现同步
rsync错误日志
rsync.conf详解
rsync使用
Linux 添加新硬盘 LVM操作(作用:新增硬盘的卷管理)
Copyright © 2011-2022 走看看