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.
"
;
}
}
查看全文
相关阅读:
高精度求n的累加和
软件测试简介
实数加法
洛古P1542
css制作三角形 实心的和空心的(笔试常考,特此分享)!!!!
关于http主要的状态码
关于http和https的概念和区别
JavaScript关于闭包的理解和实例
关于css编写
关于javascript中apply()和call()方法的区别
原文地址:https://www.cnblogs.com/bluespot/p/1250350.html
最新文章
C/C++笔试经典程序(二)
遍历二叉树顺序
C/c++笔试经典程序(一)
C语言宏定义#define用法
SGU 502 Digits Permutation
SGU 506 Subsequences Of Substrings
SGU 507 Treediff
SGU 505 Prefixes and suffixes
HDU 3720 Arranging Your Team
poj 3517
热门文章
uva 10891
poj 1952 最长公共子序列计数
poj 1159 最长回文
FZU Problem 2129 子序列个数
Mac上使用C++11编译
pip 使用清华源
vim与word之间的内容交互
求字符串有多少个回文子串
python访问指定链接并获取文本信息
高精度求大数乘法
Copyright © 2011-2022 走看看