版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
JSP指令、操作与JavaBean本章首先介绍了JSP指令和操作,然后在此基础上通过示例阐述了在JDeveloper和OC4J环境下,使用JSP指令与操作开发Web应用的原理和方法。最后,分析了JSP与JavaBean之间的关系,通过示例阐述了在JSP页面中使用JavaBean的方法。第8章 JSP指令、操作与JavaBeanJSP指令JSP操作JSP与JavaBean小
结8.1
JSP指令JSP技术规范定义了以下3条指令:page——提供关于页面的一般信息。include——用于包含外部文件的内容。taglib——用于导入在标记库中定义的自定义操作JSP指令的语法格式<%@directive_nameattribute_name=attribute_value
…
%>–
“<%@”表示开始,“%>”表示结束。“<%@”符号之后要写一个名字,这个名字告诉JSP容器执行什么类型的指令。在指令名的后边,可以有一个或多个属性名和值对。page指令的作用域对整个页面有效,与书写位置无关。上把page指令写在JSP指令的最前面。8.1.1
page指令<%@
page[language="java"][extends="package.class"][import="package.class|package.*,…"][errorPage="relativeURL"][session="true|false"][info="text"][contentType="mimeType[;charset=charsetSet]"|"text/html;charset=ISO-8859-1"][isThreadSafe="true|false"][buffer="none|8kb|size
kb][autoFlush="true|false"][isErrorPage="true|false"]1.language属性language属性定义了JSP页面使用的
语言,目前的取值只能为Java。语法格式:–
<%@
page
language="java"%>2.extends属性extends属性定义了继承的Java类的名称。extends属性没有默认值,如果不在page编译指令中指明extends属性,则JSP容器会判断不存在可以继承的类。extends属性的语法格式如下:–<%@
page
extends="要继承的类"%>3.import属性import属性定义了JSP页面要导入的包。下面是JSP页面默认已导入的包:java.lang.*,javax.servlet.jsp.*,javax.servlet.http.*当为import指定多个属性值时,JSP容器把JSP页面翻译成的Java文件中会有以下import语句:import
java.lang.*;import
javax.servlet";import
javax.servlet.jsp.*;import
javax.servlet.http.*;在一个JSP页面中,也可以使用多个page指令指定属性及其值。例如:<%@
page
contentType="text/html;charset=GB2312"%><%@
page
import="java.util.*"%><%@
page
import="java.util.*","java.awt.*"%>4.errorPage和isErrorPage属性errorPage属性定义了当JSP页面处于客户请求期间,如果JSP页面在执行过程中发生异常所要传送的网页。isErrorPage属性用于判断当前页面是否为错误提示页面:当设为true时,表示当前页面为错误提示页面,并控制异常对象。它的默认值是false。当为false时,无法控制异常对象,所以要想控制异常对象,必须将属性设置为true。orderForm.htmlprocessOrder.jsp..<%--
processOrder.jsp
--%><%@
page
contentType="text/html;charset=GB2312"
errorPage="orderError.jsp"%><HTML><HEAD><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html;
charset=GB2312"><TITLE>processOrder.jsp</TITLE></HEAD><BODY><CENTER><H3>您
了如下商品:</H3><%String
numTees
=
request.getParameter("t_shirts");String
numHats
=
request.getParameter("hats");double
numTees1=Double.parseDouble(numTees)*175.0;double
numHats1=Double.parseDouble(numHats)*120.0;2.13.14.
%>高级衬衫数量:<%=numTees
%><BR>:
<%=
numTees1
%><P>高级礼帽数量:<%=numHats
%><BR>:
<%=
numHats1
%></CENTER></BODY></HTML>orderError.jsp<%--
orderError.jsp
--%><%@
pagecontentType="text/html;charset=GB2312"isErrorPage="true"%><HTML><HEAD><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html;charset=GB2312"><TITLE>isErrorPage</TITLE></HEAD><BODY><%if
(exception
instanceof
NumberFormatException)8.
%>请在 数量字段输入一个数字<BR>返回主页面<Ahref="orderForm.html">orderForm.html</A></BODY></HTML>5.session属性session属性定义了一个页面是否参与一个HTTP会话。当值为true时,隐含对象命名的会话称为javax.servlet.http.HttpSession,它可以被使用并且可 页面的当前会话/新会话。如果值为false,则该页面不参与一个会话,隐含的会话对象也是不可用的。6.info属性"info属性为JSP页面准备了一个有意义的字符串,属性值是某个字符串。例如,下面的JSP页面程序片段:<%@
page
contentType="text/html;charset=GB2312"%><%@
page
info="作者:
<br>最后更新日期:%><HTML><BODY><% String
s=
getServletInfo(
);out.println("<BR>"+s);%></BODY></HTML>在浏览器上显示如下的info的属性值:作者:最后更新日期7.contentType属性contentType属性定义了JSP页面的字符编码和响应信息的MIME(Multipurpose
InternetMail
Extension)类型。如果用户没有创建一个contentType属性,那么JSP容器提供的默认值如下:–
<%@
page
contentType="text/html;
charset=
ISO-8859-1"
%>8.isThreadSafe属性isThreadSafe属性定义了JSP页面是否可以用多线程方式被
。如果属性的取值为true,则JSP页面能同时响应多个客户请求;如果属性的取值为false,则JSP页面同一时刻只能处理响应一个客户请求,其他客户需要排队等待。isThreadSafe属性的默认值是true。9.buffer属性buffer属性定义了对客户的输出流指定缓冲 模型缓存是一种作为中间 器使用、预先保留的内存区域,其中的数据只是临时存放。如果属性的值为none,则没有缓冲
操作,所有的输出都将由一个PrintWriter通过ServletResponse写出。如果指定了一个缓冲区的大小,则表示利用out对象进行输出时,并不直接传送到PrintWriter对象,而是先经过缓存,然后才输出到PrintWriter对象。10.autoFlush属性autoFlush属性定义了当JSP页面的所有缓存都已经存满时,是否自动将所产生的内容输出到客户机浏览器,其默认值是true。如果将其值改为false,则当缓存内容超出其所设定的值大小时,会产生溢出的异常。8.1.2
include指令include指令的语法格式如下:<%@
include
file="FileName"
%>include指令通知JSP容器在当前JSP页面中包含一个资源的内容,并把它嵌入在JSP页面中来代替这条指令,指定的文件必须是可 和可用的。jspInclude1.jsp<%--
jspInclude1.jsp
--%><%@
pagecontentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>jspInclude1</TITLE></HEAD><BODY><%--
jspInclude1.jsp--%><%@
include
file="jspInclude2.jsp"
%></BODY></HTML>jspInclude2.jsp<%--
jspInclude2.jsp
--%><%@
page
contentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>jspInclude2</TITLE></HEAD><BODY><P>JSP是哪几个英文字母的缩写?</P><FORM
action="jspInclude3.jsp"
method="post"><INPUT
type="radio"
name="Answer"
value="Java
Service
Pages">JavaServicePages<br><INPUT
type="radio"
name="Answer"
value="Java
Server
Pages">Java
Server
Pages<br><INPUT
type="radio"
name="Answer"
value="Java
Servlet
Pages">Java
ServletPages<br><p><INPUT
type="submit"
name="submit"
value="传送结果"></FORM></BODY></HTML>jspInclude3.jspr")<%--
jspInclude3.jsp
--%><%@
pagecontentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>jspInclude3.jsp</TITLE></HEAD><BODY>JSP是哪几个英文字母的缩写?<BR><P>您的回答:"<%=reques%>"<BR></BODY></HTML>8.2
JSP操作JSP操作标准操作(Standard
Actions)用户定义操作(User-defined
Actions)两种类型。标准操作由JSP开发商SunMicroSystems公司定义,适用于所有JSP容器,本书只介绍标准操作。8.2.1
<jsp:include>与<jsp:param>操作<jsp:include>操作的一般语法格式如下:格式1:<jsp:include
page="文件的相对路径"flush="true"/>格式2:<jsp:include
page="文件的相对路径"flush="true"/><jsp:param
name="参数名"value="参数值"/></jsp:include><jsp:include>操作有以下两个属性:Page指要包含进来的文件位置或是经过表达式计算出的相对路径。Flush可选属性,默认值为false;如果为true,则输出流中的缓冲区将在包含的内容执行之前被清除。jspActionInclude1.jsp<%--
jspActionInclude1.jsp
--%><%@
page
contentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>jspActionInclude1.jsp</TITLE></HEAD><BODY><jsp:include
page="jspActionInclude2.jsp"
flush="true"><jsp:param
name="username"
value=" "
/><jsp:param
name="password"
value="lixiaoya"
/></jsp:include><%
out.println("<H2>JSP操作实例</H2>");%></BODY></HTML>jspActionInclude2.jsp<%--
jspActionInclude2.jsp
--%><%@
page
contentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>jspActionInclude2.jsp</TITLE></HEAD><BODY><%
request.setCharacterEncoding("GB2312");%>用户名称:<%=request.getParameter("username")%><BR>用户
:<%=request.getParameter("password")
%><BR><%
out.println("JSP操作实例<BR>");</BODY></HTML>8.2.2
<jsp:forward>操作forward操作的语法格式如下:格式1:<jsp:forward
page="前一页面"/>格式2:<jsp:forward
page="前一页面的路径"/><jsp:param
name="参数名"value=参数值"/></jsp:forward>forward.html:<INPUT
type="text"
name="userName">:<INPUT
type="password"name="password"></P><HTML><HEAD><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html;charset=GB2312"><TITLE>Forward
action
test
page</TITLE></HEAD><BODY><H2>Forwardaction
test
page</H2><FORMmethod="post"
action="forward1.jsp"><P>输入<BR>输入<P><INPUT
type="submit"value="Login"></FORM></BODY></HTML>forward.jsp<%--
forward.jsp
--%><%@
page
contentType="text/html;charset=GB2312"%><%
request.setCharacterEncoding("GB2312");if((request.getParameter("userName").equals(" "))
&&5.(request.getParameter("password").equals("songbo")))
{6.
%><jsp:forward
page="forward2.jsp"/><%
}
else
{
%><%@
include
file="forward.html"
%><%
}
%>forward2.jsp<%--
forward2.jsp
--%><%@
pagecontentType="text/html;charset=GB2312"%><HTML><HEAD><TITLE>Forward
actiontest:
Loginsuccessful</TITLE></HEAD><BODY><H2>Login
successful!</H2><% request.setCharacterEncoding("GB2312");
%><P> e,<%=request.getParameter("userNam</BODY></HTML>8.3
JSP与JavaBean一个标准JavaBean通常必须遵守以下几项规范:JavaBean是一个public类。JavaBean拥有一个不需要导入参数的构造方法。JavaBean中的每个属性(Property)必须定义一组getXX()和setXX()方法,以便存取它的属性值。getXX()和setXX(
)方法的名称必须遵循JavaBean
名规则(如果属性名称为name,则方法得名称应该是setName()与getName(
))。示例:public
class
employeeBeans
{String
name;String
address;public
employeeBeans()
{
}public
String
getName()
{ return
name;
}public
void
setName(String
newName)
{name=newName;8.
}public
String
getAddress()
{return
address;11.
}public
void
setAddress(String
newAddress)
{address=newAddress;14.
}15.
}8.3.1
JavaBean的存取范围;JavaBean存取范围说明applicationWeb应用的所有JSP页面都可以存取这个JavaBean此时,这个JavaBean相当于ServletContext对象的属性session在相同的HTTP会话内可以存取这个JavaBean;此时,这个JavaBean相当于HttpSession对象的属性request这个JavaBeans相当于ServletRequest对象的属性page只有在当前的JSP页面内可以存取这个JavaBean;此时,这个JavaBean相当于PageContext对象的属性8.3.2
使用JavaBean<jsp:useBean>操作<jsp:useBean>包括以下5个属性:id——在JSP页面内
JavaBean的变量名称。scope——JavaBean的存取范围,可以是
application、session、request、page,默认值是
page。class——JavaBean的类名称。beanName——JavaBean的名称。type——id属性值的变量类型。8.3.2
使用JavaBean<jsp:useBean>操作的一般语法格式如下:<jsp:useBean
id="变量名称"scope="存取范围
"类型说明/>其中,“类型说明”是class、beanName与type三种属性的组合,分为以下几种:class="JavaBean类名称"class="JavaBean类名称"type="变量名称"type="变量类型"class="JavaBeans类名称"beanName="JavaBean名称"type="变量名称"type="变量类型"beanName="JavaBean名称"type="变量类型"8.3.2
使用JavaBean以下是<jsp:useBean/>操作的使用示例:<jsp:useBean
id="employee"class="employeeBeans"
scope="page"
/>该示例在JSP页面内创建了一个employeeBeans对象实例,可以通过employee这个变量来存取该JavaBean,存取范围是当前的JSP页面。2.<jsp:setProperty>操作创建JavaBean对象实例后,可使用以下两种方式初始化JavaBean的属性值:调用JavaBean的setXX()方法。使用<jsp:setProperty>操作。以下是使用JavaBean的setXX()方法设置其属性值的示例:<jsp:useBean
id="employee"
class="employeeBeans"scope="page"
/><%
employee.setName(request.getParamter("name"));employee.setAddress(request.getParamter("Address"));–
%>2.<jsp:setProperty>操作使用<jsp:setProperty>操作也可设置JavaBean属性,它包含以下4个属性:name——JavaBean变量名称(由<jsp:useBean>操作的id属性指定)。property——要设定的JavaBean属性名称。param——HTTP请求所传递的参数。value——要设定的JavaBean属性值。2.<jsp:setProperty>操作以下的示例JSP容器会自动从HTTP请求(ServlstRequest对象)中找出name参数值,存入JavaBean的name属性。<jsp:setProperty
name="employee"
property="name"
/>如果HTML<Form> 所传递的参数名称为employeeName,而JavaBean的属性名称为name,则应该使用以下方式设置name的属性值。<jsp:setProperty
name="employee"
property="name"param="employeeName"
/>也可使用value属性设置JavaBean属性值,如以下的示例:<jsp:setProperty
name="employee"
property="name"value="smith"/>3.JavaBean的自省机制在JSP页面内进行JavaBean的初始化时,如果HTML
<Form> 所传递的参数太多,可以使用property="*"一次设定JavaBean所有属性。例如,以下的示例:<jsp:useBean
id="imployee"
class="employeeBean"/><jsp:setPropertyname="employee"
property="*"
/>4.<jsp:getProperty>操作例如以下的示例:雇员 :<%=employee.getName(
)
%>使用<jsp:getpropety>操作也可以取得JavaBean的属性值。例如以下示例:雇员
:<jsp:getPropertyname="employee" property="name"
/>8.3.3
JavaBean在JSP中的应用图8.11Web应用执行流程图输入用户数据对数据进行分析处理输出数据①输入等数据输入数据的空对象②将输入的数据存入空的对象③建立一个新网页接收空对象中的数据④对输入数据进行分析处理,得出结果分析处理的结果⑤在网页上显示分析处理结果bookTextBeans.java..8.19.20.package
bookTextBeans;public
class
bookTextBeans{private
String
id
=
"";private
String
desc
=
"";private
int
qty
=
0;private
double
price
=
0.0;private
String
item[
]
={"",
"",Integer.toString(0),
Double.toString(0.0)};public
booktextBeans()
{
}public
void
setId(String
id){this.id=id;}public
void
setDesc(String
desc)
{this.desc=desc;}public
void
setQty(int
qty)
{this.qty=qty;}public
void
setPrice(double
price){this.price=price;}public
void
setItem(String
item[
])
{this.item=item;23.
}public
String
getId(
)
{return
id;26.
}public
String
getDesc(
)
{return
desc;29.
}public
int
getQty(
)
{return
qty;32.
}public
double
g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包酒席合同范本
- 桓台劳动合同
- 环境治理合同协议
- 划缴税费三方协议书
- 2024版云服务系统建设与维护合同
- 2024年度出租车行业碳排放交易合同
- 二零二四年度人力资源服务合同:企业员工招聘与培训
- 2024年度便利店会员管理系统加盟合同
- 水牛购销合同范本
- 2024年度租赁合同:带电器家具的个人住宅租赁期限与解除条件
- 2024年新人教版一年级数学上册第4单元《第1课时 10的再认识》课件
- 消防管道及设备安装技术交底
- 标准作业练习卷含答案
- 2022年黑龙江哈尔滨中考满分作文《这也是收获》2
- 2024三新供电服务限公司第二批供电服务职工招聘261人高频500题难、易错点模拟试题附带答案详解
- 第四次全国文物普查工作推进情况汇报3篇
- 《江城子·乙卯正月二十日夜记梦》课件 -2024-2025学年统编版高中语文选择性必修上册
- 2024年浙江省初中学业水平考试数学试题(潮汐卷)(解析版)
- 2024至2030年全球与中国市场气体报警器深度研究报告
- 中职教育一年级上学期英语《We Are Friends》课件
- DL∕T 2447-2021 水电站防水淹厂房安全检查技术规程
评论
0/150
提交评论