【文档说明】JSP程序设计第3章.ppt,共(41)页,628.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2324.html
以下为本文档部分文字说明:
第3章JSP语法3.1JSP通用语法•掌握一门编程语言要从它的语法开始。本章在介绍JSP的通用语法和脚本元素的基础上,详细介绍JSP的内置对象、指令和动作。3.1JSP通用语法•JSP是由Sun公司在Java语言上开发出来的一
种动态网页制作技术,可以将网页中的动态部分和静态的HTML相分离。用户可以使用平常惯用的工具(如Dreamweaver)并按照平常的方式来书写HTML语句。然后,将动态部分用特殊的标记嵌入即可,这些标记常常以“<%”开始并以“%>”结束。3.1.1
JSP基本语法3.1.2注释•JSP的注释可分为三种:HTML注释、隐藏注释和标准Java注释。•1.HTML注释•HTML注释在客户端显示,其语法格式如下:•<!comment[<%=expression%
>>•2.隐藏注释•HTML注释会被客户端利用“查看源代码”看到,如果用户不想被客户端看到注释的内容,就应该将其嵌入到“<%”和“%>”标记中。JSP编译器会将隐藏注释标记中的字符忽略掉,而不对该语句进行编译。例如:•<%@pag
elanguage="java"%>•<html>•<head><title>HiddenCommentTest</title></head>•<body>•<h2>ATestofHiddenComments</h2>•<%这部分注释在"查看源代码"中是不
可见的%>•</body>•</html>••3.标准Java注释•标准Java注释只能包含在脚本代码中。JSP容器不对该部分内容编译,也不会发送到客户端浏览器。标准Java注释的JSP语法如下:•//comment•或•/*comment*/3
.2JSP脚本元素•单击“下一步”按钮,弹出“摘要”界面。JSP脚本由三个元素组成,即JSP表达式、JSP脚本程序和JSP声明。JSP表达式包含在“<%=”和“%>”标签内,JSP脚本程序包含在“<%”和“%>”内,JSP声明包含在“<%!”和“%>”内。3.2.1表达式•表达式是对数据的表
示,系统将其作为一个值进行计算和显示。•1.语法格式•表达式的语法格式如下:•<%=expression%>•JSP表达式是一个值,包含在“<%=”和“%>”中,在运行后被自动转化为字符串,然后插入到这个表达式所在的位置中。因为这个表达式的值已经被转化为字符串,所以用户能在一
行文本中插入这个表达式。•2.注意事项•(1)用户不能用分号(;)作为表达式的结束符。•(2)一个表达式元素可以是任何一个符合Java语言规范的表达式,也可以由多个表达式组成。•(3)表达式也能作为其他JSP元
素的属性值。3.2.2脚本程序•JSP脚本程序就是在JSP页面里嵌入的一段Java代码。•1.语法格式•JSP脚本程序的语法格式如下:•<%代码段%>3.2.2脚本程序•2.注意事项•(1)在脚本程序中也可以像表达式那样随意定义变
量。•(2)在脚本程序中可以使用任何隐含的对象和任何用<jsp:useBean>声明过的对象,可以编写JSP语句。•(3)任何HTML文本标记必须写在脚本程序,即“<%”和“%>”对之外。•(4)当JSP编译器收到客户端的请求时,脚本程序就会被执行。如果脚本程序有显示
内容,这些显示的内容被保存在out对象中。3.2.3声明•JSP声明就是在JSP页面中声明Java方法或变量等。•1.语法格式•JSP声明的语法格式如下:•<%!declaration;[declaration;]…%>3.2.2脚本程序•
2.注意事项•(1)用户可以一次性声明多个变量和方法,但一定要以分号(;)结束变量声明,因为任何内容都必须是有效的Java语句。•(2)用户可以直接使用在“<%@page”和“%>”对中已经声明的变量和方法,不需要对它们重新进行声明。•(3)一个声明仅在一
个页面中有效。如果要使一些声明在每个页面中都可用,最好把它们写成一个单独的文件,然后用<%@include%>或<jsp:include>元素包含进来。•(4)声明不能产生任何输出,它通常用作JSP表达式和脚本代码之间的连接。3.3JSP指令•JS
P指令是为JSP引擎设计的,JSP指令并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面的相关信息。JSP指令共有三种类型,即page指令、include指令和taglib指令,包含在“<%@”和“%>”内。page指令用于设置JSP页面的属性;in
clude指令用于在JSP页面嵌入其他文件;taglib指令用于在JSP页面中创建和使用自定义标签。JSP指令的语法格式如下:•<%@指令名称属性1="值1"属性2="值2"……属性n="值n"%>3.3.1include指令•inc
lude指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面。其语法格式如下:•<%@includefile="relativeURL"%>•其中,“relativeURL”表示要嵌入文件的路径,它可以是文档相对路径或站点相对路
径。3.3.2page指令•page指令用于设置JSP页面的全局属性,其语法格式如下:•<%@pagelanguage="java"•extends="类名"•import="Java包列表"•session="true|false"•buffer="n
one|8KB|自定义缓冲区大小"•autoFlush="true|false"•inThreadSafe="true|false"•info="页面信息"•errorPage="页面出错时错误处理页面的URL"•contentType="内容类型信息"•isErr
orPage="true|false"•%>3.3.3taglib指令•taglib指令的作用是将标签库描述符文件引入到该页面中,并设置前缀。其语法格式如下:•<%@tagliburi="URIToTaglibary"prefix="pref
ix"%>•属性说明如下:•(1)“URIToTaglibary”是指标签库表述符文件。“uri”是uniformresourceidentifier的缩写,即统一资源标记符,根据标签的前缀对自定义的标签进行唯一的命名。uri可以是URL(uniformres
ourcelocator)、URN(uniformresourcename)以及一个相对或绝对路径。•(2)“prefix”表示自定义标签前的前缀。3.4JSP内置对象•为了简化页面开发的复杂度,JSP提供了一些可在脚本中使用的内
置对象,在使用这些内置对象之前不需要对它们进行声明。通过使用这些对象,可以使用户更容易收集客户端发送的请求信息,并响应客户端的请求以及存储客户信息。内置对象的名称是JSP的保留字,JSP使用内置对象来访
问网页的动态内容,它一般分为输入/输出对象、作用域通信对象、Servlet对象和错误对象四类。3.4.1输入/输出对象•输入/输出对象用于控制页面的输入和输出,访问同请求和响应有关的数据,它包括request、response
和out对象。•1.request对象•request对象主要用于接收客户端通过HTTP协议传输到服务器端的数据。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。•2.response对象•re
sponse对象主要用来向客户端发送数据,如CookieHTTP文件头信息等。response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。•3.out对象•out对象创建输出流,用来向客户端输出显示信息
,它是javax.servlet.jsp.JspWriter类的实例,其主要方法如下:3.4.2作用域通信对象•1.session对象•Web服务器为每个用户发送的多个请求创建会话,会话状态的维持是Web应用开发者必须面对的问题。session对象用来在每一个用户之间分别保存用户信息,对于那些希
望通过多个页面完成一个事务的应用是非常有用的。•2.application对象•application对象用来存储有关文档运行环境的信息。与session对象相比,application对象所保存的对象
可以被所有用户共享,而session对象则是每个用户专用的。•3.PageContext对象•PageContext对象的主要功能是让JSP容器控制其他隐含对象,如对象的生成与初始化、释放对象本身等。PageContext对象为JSP默认的隐含对象
,以及其他可用的对象提供了基本的处理方法3.4.3Servlet对象•JSP引擎为每个JSP生成一个Servlet,Servlet对象提供了访问Servlet信息的方法和变量。Servlet对象包括page对象和config对象。•1.page对象•page对象是java.lang.Object类
的一个实例,使用page对象可以访问Servlet类的所有变量和方法。•2.config对象•config对象用于存储在编译JSP页面的过程中创建的Servlet的信息,它被封装为javax.servlet.ServletConfig接口,当初始化一个Servlet时,容器把某些信息通过
config对象传递到应用该Servlet的对象中。3.4.4错误对象•错误对象用于处理JSP页面中产生的错误,常用的错误对象是exception对象。exception对象只能用于由page指令的isErrorPage属性指定的错误处理页。它是java.lang.Throwable类的实例,其
主要方法如下:•(1)getMessage():使用该方法可以返回错误信息。•(2)printStackTrace():使用该方法可以以标准错误的形式输出一个错误和错误的堆栈。•(3)toString():使用该方法可以以字符串的形式返回一个对异常的描述。3.5JSP动作•JSP动作利用XML语法
格式的标记来控制Servlet引擎的行为,利用JSP动作可以动态地插入文件。JSP中的动作使用“jsp”作为前缀,且动作中的属性区分大小写。3.5.1<jsp:forward>动作•1.语法格式及说明•<j
sp:forward>动作将当前页面的执行过程终止,忽略它的输出,并重定向到一个静态资源、JSP页面,或者一个程序段。其语法格式如下:•<jsp:forwardpage={"relativeURL"|"<%=expression%>"
}/>•如果添加参数,则其语法格式如下:•<jsp:forwardpage={"relativeURL"|"<%=expression%>"}>•<jsp:paramname="parameterName"value="{parameterVa
lue|<%=expression%>}"/>•</jsp:forward>•2.属性及用法•(1)page属性用于说明用户将要重定向的文件的文件名或URL,这个文件可以是JSP程序或者其他能够处理request对象的文件
(如asp、cgi、php文件等)。这个文件名可以是一个表达式或是一个字符串,它们描述了重定向文件的相对URL。•(2)<jsp:param>标签能够向目标文件传送参数名和值,“name”指定参数名,“value”指定参数值。如果用户使用了<jsp:param>标签,参数被发送到一个动态文件,
参数可以是一个或多个值,而这个文件却必须是动态文件。要传递多个参数,则可以在一个JSP文件中使用多个<jsp:param>将多个参数发送到一个动态文件中。3.5.2<jsp:include>动作•1.语法格式及说明•<jsp:include>动作可以将外部的静态或动态资源(包括在当前页面中的资源)
插入到JSP页面的特定位置。其语法格式如下:•<jsp:includepage="{relativeURL|<%=expression%>}"flush="true"/>•还可以使用<jsp:param>动作元素设置参数,语法如下:•<jsp:includ
epage="{relativeURL|<%=expression%>}"flush="true">•<jsp:paramname="parameterName"value="{parameterVa
lue|<%=expression%>}"/>•</jsp:include>•2.属性及用法•(1)page:指定被包含资源的相对路径,该路径相对于当前JSP页面的URL,它不能包含协议名、端口号和域名。•
(2)flush:设置是否刷新当前页面的缓冲区。•(3)param:指定附加的request参数。3.5.3<jsp:plugin>动作•1.语法格式及说明•<jsp:plugin>动作用于在JSP页面中嵌入在客户端运行的Java程序(如Applet和JavaBean等),其语法格式如
下:•<jsp:plugin•type="bean|applet"•code="classFileName"•codebase="classFileDirectoryName"•[name="instanceName"]•[archive="URLToArchiv
e,…"]•[align="bottom|top|middle|left|right"]•[height="displayPixels"]•[width="displayPixels"]•[hspace="leftRightPixels"]•[
vspace="topBottomPixels"]•[jreversion="JREVersionNumber|1.1"]•[nspluginurl="URLToPlugin"]•[iepluginurl="URLToPlugin"]>•[<jsp:params>•[<jsp:param
name="parameterName"value="{parameterValue|<%=expression%>}"/>]</jsp:params>]•[<jsp:fallback>textmessageforuser</jsp:fallback>]•</jsp:plug
in>3.5.3<jsp:plugin>动作•2.属性及用法•(1)type="bean|applet":plugin将要执行的对象的类型,用户必须指定bean或者applet,因为这个属性没有缺省值
。•(2)code="classFileName":plugin将要被Java插件执行的Java类的名字,它的名字必须包含.class扩展名,并且这个code定义的Java插件名必须保存在codebase属性指定的目录中。•(3)codebase="classFileDirectoryName":
指定将要被执行的JavaClass文件的目录(或者是路径),如果用户没有提供此属性,那么<jsp:plugin>将使用JSP文件的目录。•(4)name="instanceName":这个属性给出了bean或applet
实例的名字,以便JSP文件调用。•(5)archive="URLToArchive,…":archive的值是一些由逗号分开的文件名,这些文件名都是一些将要使用的class,将它们预装在codebase目录下,
可提高applet程序的执行效率。3.5.3<jsp:plugin>动作•(6)align="bottom|top|middle|left|right":定义了由applet或bean产生的图形在结果页面上的显示位置.•(7)height="displ
ayPixels"和width="displayPixels":指定applet或bean所要显示图形大小的初始值,displayPixels为数字,单位为像素。•(8)hspace="leftRightPixels"积vspace="topBottomPixels":指定applet
或bean所显示的图形在屏幕上下左右所需的余量,取值必须是一个很小的非零数字,单位为像素。•(9)jreversion="JREVersionNumber|1.1":指定applet或bean运行所需的JavaRuntimeEnvironment(JRE)的
版本号,缺省值是1.1。•(10)nspluginurl="URLToPlugin":指定NetscapeNavigator用户能够使用的JRE的下载地址,此值为一个标准的URL,可以带有协议名、端口号或域名。•(11)iepluginu
rl="URLToPlugin":IE用户能够使用的JRE的下载地址,此值为一个标准的URL,可以带有协议名、端口号或域名。•(12)<jsp:params>[<jsp:paramname="parameterName"value
="{parameterValue|<%=expression%>}"/>]</jsp:params>:此属性向applet或bean传送参数名或参数值,特别是传送一个以上的参数名字和值时,可使用多个带有<jsp:params>元素的<jsp:param>标
签。•(13)<jsp:fallback>textmessageforuser</jsp:fallback>:如果Java插件不能启动时,提示给用户的信息。如果Java插件能够启动,而applet或bean不能启动,那么浏览器会弹出一个出错信息
。3.5.4<jsp:useBean>动作•1.语法格式及说明•JavaBean是可以在多个应用程序中重复使用的组件(后续章节有详细介绍),JSP中对JavaBean的使用正是通过<jsp:useBean>来完成的。<j
sp:useBean>寻找或者实例化一个JavaBean,可在JSP页面中提供JavaBean组件。其语法格式如下:•<jsp:useBean•id="beanInstanceName"•scope="page|request|session|application"•{•class="packa
ge.class"|•type="package.class"|•class="package.class"type="package.class"|•beanName="{package.class|<%=expression%>}"t
ype="package.class"•}/>•2.属性及用法•(1)id="beanInstanceName":id属性定义了在用户所指定范围内,用户所要提取的Bean的名字,用户能在后面的同一个JSP文件的表达式或脚本程序中看到这个变量名,它区别于不同的Bea
n。这个变量名对大小写敏感,一定要注意符合用户所使用的脚本语言的规定。如果用户用的是Java编程语言,那么就应该遵从Java的语言规范。如果这个Bean已经在别的<jsp:useBean>中创建,那么这个id的值
必须与那个id的值一致。•(2)scope="page|request|session|application":scope定义了Bean存在的范围以及id变量名的有效范围。•(3)class="package.class":使用new关键字以及
class构造器从一个class中示例一个Bean。这个class不能是抽象的,必须有一个公用的、没有参数的构造器。这个package的名字区别大小写。•(4)type="package.class":如果这个Bean
已经在指定的范围中存在,那么给这个Bean指定一个新的数据库类型。如果用户没有使用class或beanName指定type,Bean将不会被示例。package和class的名字区分大小写。•(5)beanName="{package.class|<%=express
ion%>}"type="package.class":使用java.beans.Beans.instantiate方法从一个class或连续模版中示例一个Bean,同时指定Bean的类型。beanName可以是
package和class也可以是表达式,它的值会传给Beans.instantiate.type,其值可以和Bean相同。package和class名字区分大小写。3.5.5<jsp:setPrope
rty>动作•1.语法格式及说明•<jsp:setProperty>用来设置JavaBean在JSP页面中的属性,其语法格式如下:•<jsp:setPropertyname="beanInstanceName"•{•property="*"|•property="propertyN
ame"[param="parameterName"]|•property="propertyName"value="{string|<%=expression%>}"•}•/>•2.属性及用法•(1)name:描述了Bean实例的名字,而这个Bean实例
已经存在或已经由<jsp:useBean>标签创建完成。•(2)property="*":储存用户输入的所有数据(被称为请求参数),用于匹配Bean中的属性。Bean中的属性的名字必须和request对象中的参数名一致,这个参数名通常来
自于HTML元素和用户的输入。•(3)property="propertyName"[param="parameterName"]:使用request中的一个参数值来指定Bean中的一个属性值。其中,prop
erty指定Bean的属性名,param指定request中的参数名。如果Bean属性和request参数的名字不同,那么就必须指定property和param;如果相同那么就只需要指明property即可。如果参数值为空(或未初始化),那么对应的B
ean属性也不会被设定。•(4)property="propertyName"value="{string|<%=expression%>}":使用指定的值来设定Bean属性,这个值可以是字符串,也可以是表达式。如果值是字符串,那么它就会被转换成
Bean属性的类型,如果它是一个表达式,那么这个表达式的数据类型也必须和它将要设定的属性值的类型一致。如果参数值为空,那么对应的属性值也不会被设定。3.5.6<jsp:getProperty>动作•1.语法格式及说明•<jsp:getProperty>动作用来获取Bean的属性的
值并将之转化为一个字符串,然后将其插入到输出的页面中,与用来设置属性的<jsp:setProperty>动作相对应。其语法格式如下:•<jsp:getPropertyname="beanInstanc
eName"property="propertyName"/>•2.属性及说明•(1)name="beanInstanceName":name为必选属性,其值为Bean的名称,由<jsp:useBean>动作标记中的id指出。•(2)prope
rty="propertyName":property也为必选属性,其值为Bean属性的名字,可以显示。本章小结•本章在介绍JSP的通用语法规则和脚本元素的基础上,详细介绍了JSP的内置对象、指令和动作。通过本章的学习,要求对JSP的基本语法有一个较为全面的认识,能够利用相应的指令、内置对象和动
作等进行基础的编程。