程序设计-chapter p第8章JSP指令、操作与_第1页
程序设计-chapter p第8章JSP指令、操作与_第2页
程序设计-chapter p第8章JSP指令、操作与_第3页
程序设计-chapter p第8章JSP指令、操作与_第4页
程序设计-chapter p第8章JSP指令、操作与_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论