第四章 JSP基本语法.docx

上传人:b****0 文档编号:9941638 上传时间:2023-05-22 格式:DOCX 页数:22 大小:161.45KB
下载 相关 举报
第四章 JSP基本语法.docx_第1页
第1页 / 共22页
第四章 JSP基本语法.docx_第2页
第2页 / 共22页
第四章 JSP基本语法.docx_第3页
第3页 / 共22页
第四章 JSP基本语法.docx_第4页
第4页 / 共22页
第四章 JSP基本语法.docx_第5页
第5页 / 共22页
第四章 JSP基本语法.docx_第6页
第6页 / 共22页
第四章 JSP基本语法.docx_第7页
第7页 / 共22页
第四章 JSP基本语法.docx_第8页
第8页 / 共22页
第四章 JSP基本语法.docx_第9页
第9页 / 共22页
第四章 JSP基本语法.docx_第10页
第10页 / 共22页
第四章 JSP基本语法.docx_第11页
第11页 / 共22页
第四章 JSP基本语法.docx_第12页
第12页 / 共22页
第四章 JSP基本语法.docx_第13页
第13页 / 共22页
第四章 JSP基本语法.docx_第14页
第14页 / 共22页
第四章 JSP基本语法.docx_第15页
第15页 / 共22页
第四章 JSP基本语法.docx_第16页
第16页 / 共22页
第四章 JSP基本语法.docx_第17页
第17页 / 共22页
第四章 JSP基本语法.docx_第18页
第18页 / 共22页
第四章 JSP基本语法.docx_第19页
第19页 / 共22页
第四章 JSP基本语法.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第四章 JSP基本语法.docx

《第四章 JSP基本语法.docx》由会员分享,可在线阅读,更多相关《第四章 JSP基本语法.docx(22页珍藏版)》请在冰点文库上搜索。

第四章 JSP基本语法.docx

第四章JSP基本语法

 

大理学院课程教案

(理论教学)

 

课程名称:

JSP程序设计

课程类型:

(2)1、必修;2、选修;3、其它

授课对象:

计算机教育专业(本、专科)2010级专科班

授课时间:

2012至2013学年第2学期

计划学时:

48学时(其中:

理论24,实验:

24)

任课教师:

杜英国

所属学院:

数学与计算机学院

课程管理部门(教研室):

软件教研室

 

大理学院教务处制

 

课程名称:

软件工程

教材:

JSP开发技术杨俊生编著清华大学出版社

 

讲授人:

杜英国专业技术职务:

讲师

学历:

研究生学位:

硕士

讲授题目:

第四章JSP基本语法

所属章节:

第四章JSP基本语法 计划学时:

6

教学目的和要求:

1.熟悉JSP指令元素、JSP动作元素

2.掌握JSP文件的组成元素、隐藏注释(HiddenComment)、声明语句(Declaration)、表达式(Expression)、include指令、taglib指令、

useBean>、

setProperty>、

getProperty>、

include>、

forward>、

param>

3.了解JSP文件的结构

教学重点:

include指令、taglib指令、

useBean>、

setProperty>、

getProperty>、

include>、

forward>、

param>

 

教学难点:

include指令、taglib指令、

useBean>、

setProperty>、

getProperty>、

include>、

forward>、

param>

 

教学方法:

多媒体教学,系统讲授,实践教学

 

使用教具:

多媒体教学系统

 

思考题:

 

参考资料:

1.《JSP应用开发技术》柳永坡刘雪梅赵长海编著人民邮电出版社

2.《JSP程序设计》VivekChopra,JonEaves,RupertJones编著张文静林琪等  翻译人民邮电出版社

 

第三章JSP基本语法

本章将针对JSP所包含的各类元素,包括JSP注释、声明、表达式、程序段、JSP指令(DirectiveElements)、JSP动作(ActionElements)以及JSP异常处理等主要方面来说明JSP的基本语法。

4.1注释

一般来说,JSP注释可以分为两种。

一种是可以在客户端显示的注释,称为客户端注释;另一种是客户端不可见,仅供服务器端JSP开发人员可见的注释,称为服务器端注释。

客户端注释的基本语法格式如下所示:

—comment[<%=expression%>]-->

例如:

—这个注释可以在客户端源代码中看到-->

该注释将被发送至客户端浏览器,即在浏览器的HTML源代码中可以看到该注释。

类似于普通的HTML注释,唯一的不同在于,可以在这种JSP注释中加入特定的JSP表达式,例如:

—现在时间为:

<%=(newjava.util.Data()).toLocalString()%>-->

以上注释将在浏览器客户端源代码中显示为:

—现在时间为:

July21,2006-->

服务器端注释可以有两种表述方式:

<%/*comment*/%>和<%--comment--%>

这两种表述方式效果一致,其注释内容将不会被发送到客户端。

例如:

<%--该JSP程序在浏览器中注释无法显示--%>

<%/*该JSP程序注释在浏览器中无法显示*/%>

以上两行注释在客户端源代码中是不可见的,因为它并不会发送给客户端。

需要注意的是,JSP注释内容中不能出现“--%>”,否则会出现编译错误。

如果必须使用“--%>”作为注释内容,请使用“--%\>”代替之。

4.2声明

JSP中的声明,用于声明JSP程序中使用的变量、方法等,其声明方式与Java相同(因为声明最终将被发送到服务器端作为Java语句解释),其语法格式为:

<%!

declaration;[declaration;]……%>

例如:

<%!

inti=2004;%>

<%!

inta,b;intc;%>

<%!

publicString[]StrArray;%>

<%!

inttime=Calendar.getInstance().get(Calendar.AM_PM);%>

如上例所示,使用此种方法在JSP中对变量和方法进行声明,可以一次声明多个变量或者多个方法,只要最后以“;”结尾即可。

每个声明仅在当前的JSP页面中有效,如果希望声明在每个页面中均有效,可以采用的一个方法是将这些公用的变量和方法声明在一个单独的页面中,在其他页面中仅使用<%@include%>或者

include>元素将该公共页面包含进每个页面。

对变量进行声明的方法也并非仅此一种,使用表达式同样可以进行变量的声明。

4.3表达式

表达式元素表示的是一个在脚本语言中被定义的表达式,在运行后被自动转化为字符串,然后显示出来。

其基本语法为:

<%=expression%>

例如:

<%=getName()%>

<%=(newjava.util.Date()).toLoccaleString()%>

使用JSP表达式的时候,需要注意以下2个问题:

Ø不能使用分号“;”来作为表达式的结束符号,但是同样的表达式用在声明中就需要用分号来结尾。

Ø表达式元素能够包括任何在Java中有效的表达式。

有时候表达式也能作为其他JSP元素的属性值。

一个表达式在形式上可以很复杂,它可能由一个或多个表达式组成,而这些表达式的运算顺序是从左到右,依次计算,然后转换为字符串。

4.4程序段

在JSP中称符合Java语言规范的程序片断为程序段,一般把它包括在“<%%>”之间,其基本语法为:

<%codefragment%>

程序段也可以用于JSP变量和方法的声明、显示表达式以及调用JavaBean等。

JSP程序段是完全符合Java语法的,在实际运行时会被转换成Servlet。

来看一个程序段的实例:

<%if(Math.random()<0.5){%>

Haveaniceday!

<%}else{%>

Havealousyday!

<%}%>

也许会有疑问,表达式之间还夹杂了包含HTML语法的文本,这怎么能说是完全符合Java语法?

实际上这只是为了便于JSP程序的理解和书写而采用的一种策略,实际上它将会转换成以下形式:

if(Math.random()<0.5){

out.println("Haveaniceday!

");

}else{

out.println("Havealousyday!

");

}

out.println()方法所输出的HTML语句的字符串在服务器端不做任何处理,在JSP引擎看来,它就是一个普普通通的字符串,只有在客户端浏览器执行时,HTML标记“”才会被执行。

4.5JSP指令

JSP的指令一共有三个:

include指令、page指令和taglib指令。

include指令用于包含一个文件,例如包含一个HTML文件;page指令能够控制从JSP页面生成的Servlet的属性和结构;在JSP1.1标准里面,新添加了一个命令taglib,用于自定义的标记。

4.5.1include指令

include指令会在JSP页面被编译成Servlet时引入其中包含的HTML文件或JSP文件(也可能是其他类型的文件,具体允许包含哪些类型的文件需要根据Web服务器的情况而定)。

JSPinclude指令的基本语法如下:

<%@includefile=”relativeURL”%>

“file”属性指向需要引用的HTML页面或JSP页面,但是需要注意该页面的路径必须是相对路径,也不需要指定端口、协议、域名等。

如果路径以“/”开头,那么该路径等同于参照JSP应用的上下关系路径;如果路径是以文件名或者目录名开头,那么路径就是当前JSP文件所在的路径。

include指令通常用来包含网站中经常出现的重复性页面。

例如,许多网站为每个页面都包含了一个导航栏,把它放在页面的顶端或者左下方,每个页面都重复着同样的内容。

include指令是解决此类问题的有效方法,它使得开发者们不必花时间去为每个页面复制相同的HTML代码。

由于include指令是在JSP编译成Servlet时插入所包含的资源,因此使用 include指命时,包含的过程其实是静态的。

所谓静态的包含就是指被包含的文件将会被插入到JSP文件中<% @ include %>的地方,而被包含的文件本身可以是动态的JSP文件,也可以是静态的HTML文件或文本文件。

如果包含的是JSP文件,则该JSP文件中的代码将会被执行,包含的文件执行完成后,主JSP文件的过程才会被继续执行。

需要注意,被包含文件中的任何一部分改变了,所有包含该文件的主JSP文件都需要重新进行编译。

例如插入的资源是一个导航栏页面,如果导航栏改变了,那么需要重新编译所有包含该导航栏的JSP页面。

因此,include指令更适合包含一些静态文件,例如:

<%@includefile=”test.html”%>

如果被包含文件需要经常变动,则建议使用使用

include>动作代替include指令。

4.5.2page指令

<%@page%>指令用来设置整个JSP页面的相关属性和功能,<%@page%>指令作用于整个JSP页面,包括使用include指令包含在该JSP页面中的其他文件。

但是<%@page%>指令不能作用于动态的包含文件,比如对使用

include>包含的文件,page指令的设置是无效的。

page指令的基本语法如下:

<%@pageattribute1=”value1”attribute2=”value2”attribute3=”value3”…%>

以下是各属性的介绍:

Ølanguage=”java”

声明脚本语言种类,一般都是使用Java,有少数服务器支持Javascript。

Øextends=”package.class”

指明JSP页面在转换成Servlet时需要加入的JavaClass的全名。

但是必须慎重地使

用它,它会限制JSP的编译能力。

Øimport=”package1.calss1,package2.calss2,…”

这里的import同普通Java程序中的import作用是一样的,即声明需要导入的包,

由该属性决定了该JSP页面可以使用的Java包。

在page指令所有属性中,只有import属性可以出现多次,其余属性均只能定义一次。

需要注意:

在Java中,要载入多个包,需要用import分别引入,并用“;”隔开;在jsp中,如果用一个import指明多个包,需要用“,”隔开。

例如:

<%@pageimport="java.util.*,java.lang.*"%>

也可以使用分别处理的形式,例如:

<%@pageimport="java.util.*"%>  

<%@pageimport="java.lang.*"%>

Øsession=”true|false”

指明session对象是否可用,如果指定为false就无法创建session对象,当然也无

法定义session相关属性。

默认值为true。

一般情况下,很少设置该属性为false。

Øbuffer=”8kb|none|sizekb”

buffer属性的指定关系到输出是否需要缓冲。

当输出被指定需要缓冲时,服务器会将输出到浏览器上的内容做暂时的保留(不直接显示在浏览器上),除非指定大小的缓存被完全占用(autoFlush=”true”的情况),或者脚本完全执行完毕。

该方法指明输出流(out对象执行后的输出)是否有缓冲区,默认值为8kb。

但是,并非所有指定大小的存储空间都是可用的。

一般来说,会有固定大小的一定空间不可用。

ØautoFlush=”true|false”

指明缓冲区是否需要自动清除,如果设置为false,则无法自动清除,一旦buffer

溢出就会抛出异常。

默认值为true。

注意,如果buffer属性被设置为false,则autoFlush

属性必须被设置为true。

ØisThreadSafe=”true|false”

设置JSP文件是否允许多线程使用(例如:

是否能够处理多个request请求),默认

值为true。

如果设置成false,JSP容器一次只能处理一个请求。

Øinfo=”text”

描述该JSP页面的相关信息,例如info=”JSPPage指令使用实例”。

该信息可以通过getServletInfo方法从Servlet中检索得到。

ØerrorPage=”relativeURL”

指明如果该页面产生异常,应当重定向到哪个页面处理该异常。

以下是一个有关errorPage的实例:

例4.1

errorSource.jsp

<%@pageerrorPage="errorPage.jsp"%>

<%!

inti=0;%>

<%=7/i%>

errorPage.jsp:

<%@pageisErrorPage="true"%>

<%=exception%>

运行errorSource.jsp,将会显示errorPage.jsp中的0被除的错误信息。

ØisErrorPage=”true|false”

该属性指示当前JSP页面是否可以作为其他JSP页面的错误处理页,参照例3.1中errorPage.jsp的设置就可以明白。

如该属性设定为true,则该页面可以接收其他JSP页面出错时产生的exception对象;如设定为false,则无法使用exception,否则程序将会在编译时出错。

例如,将例4.1中的isErrorPage="true"改为isErrorPage="false",将会出现以下错误提示:

Error:

500

UnabletocompileclassforJSP

ØContentType=”mimeType[;charset=characterSet]”

指定了MIME的类型和JSP文件的字符编码方式,它们都是最先传送给客户端的

部分。

MIME类型有:

text/plain、text/html(缺省类型)、image/gif、image/jpeg、

等。

缺省的字符编码方式:

ISO8859-1。

如果需要显示中文字体,一般设置charset为GB2312或GBK。

4.5.3taglib指令

taglib指令是JSP1.1规格中新增的功能,它允许用户自定义新的标记,就如同XML那样。

taglib指令的基本语法如下:

<%@tagliburl=”relativetagLibURL”prefix=”tagPrefix”%>

其中url属性用来指明自定义标记库的存放位置。

tagPrefix是为了区分不同标记库中的相同标记名,就如同Java中包名和类名的关系。

这里自定义的标记有标记和元素之分,因为JSP文件能够转化为XML文件,所以了解标记和元素之间的关系很重要。

标记只不过是JSP元素的一部分。

JSP元素可以包括开始标记和结束标记,也可以包含其他的文本、标记、元素。

比如,一个

plugin>元素包含了

plugin>开始标记和

plugin>结束标记,同样也可以包含

params>和

fallback>元素。

必须在使用自定义标记之前使用<%@taglib%>指令,而且可以在一个页面中多次使用,但是前缀名称在一个页面中只能使用一次。

请不要使用jsp、jspx、java、javax、servlet和sun等作为前缀名称。

下面的例子显示了用定制的标记来产生动态内容的方法,在这种情况下并不需要引入Java类、声明变量或者书写任何Java代码:

例4.2

<%@tagliburl="/tlds/menuDB.tld"prefix="menu"%>

Today'sMenu

Lunch

<%@includefile="lunch_menu.html"%>

OurSpecialoftheDay

insertCatchOfDaymeal="lunch">

该JSP页面所使用的语法明显要比前一节使用程序段的例子简单的多,它甚至不需要初始化任何对象或执行任何方法。

从形式上看,标记定制比直接在JSP程序段之间书写Java代码简洁。

然而事实上,标记的定制比直接使用JSP程序段要复杂得多,因为定制标记需要按一定的步骤将JSP代码和Java组件中所包含的业务逻辑联系起来。

尽管如此,标记定制使得JSP程序开发者(同时也是标记定制人员)和静态网页设计者(同时也是标记的使用人员)之间的责任划分更为清晰了,程序的重用以及分布式运行也因此变得更加方便,越来越多的JSP开发工具已经开始支持JSP标记的定制。

就每个定制标记而言,它都需要以下二个组件的支持:

1、标记库:

标记库实际上是一个用于定义标记并将其连接到标记处理器的XML文件。

标记库包含了对标记的各种属性、与标记相联系的标记处理器的名称及位置、JSP引擎在处理定制标记时所需要信息等。

在使用该定制标记之前,首先必须指明标记库所在目录以便获取关于标记的定义信息(例如上例中指明标记库url地址为/tlds/menuDB.tld);在执行定制标记相关功能时,一般通过定义标记属性(例如上例中的meal属性)来决定需要显示的内容。

来看一下标记库的源代码,注意其中包括了标记名的定义、属性定义以及和该标记相关的处理类。

xmlversion="1.0"?

>

insertCatchOfDay

com.sun.CatchOfDayHandler

Queriesmenudatabaseforthecatchoftheday.

meal

在定义属性名称的同时,标记库也可以定义其数据类型以及该属性是否为必须等。

JSP引擎据此在标记处理器执行之前检查相关的错误。

附加信息用于记录诸如说明库的名称版本等内容,这些信息包含在说明库中以便提供给一些JSP第三方工具使用。

2、标记处理器:

这是一个类似Servlet的Java类,Servlet一般通过HTML中的GET或POST请求执行,标记处理器实现了标记接口(javax.servlet.jsp.Tag),当定制标记被JSP引擎处理时即被执行。

每个标记处理器都需要执行方法publicintdoStartTag(),该方法定义了定制标记被处理时需要执行的操作。

如果定制标记中包含了属性,那么标记处理器就必须定义这些属性,并为每个属性设定get和set方法。

例如,在上例中,与insertCatchOfDay标记相对应的标记处理器就是一个用于执行数据库查询请求并返回合适栏目的Java类,在为insertCatchOfDay标记定义标记处理器时,必须要定义其meal属性并使之和get、set方法相关,如下述代码所示:

privateStringmeal=null;

publicvoidsetMeal(Strings){

meal=s;

}

publicStringgetMeal(){

returnmeal;

}

4.6JSP动作

JSP1.1规格中一共制定了7项标准的“动作元素”(也称为“行为元素”),它们是:

Ø

include>

Ø

forward>

Ø

plugin>

Ø

param>

Ø

useBean>

Ø

getProperty>

Ø

setProperty>

其中

useBean>、

getProperty>和

setProperty>动作和JavaBean结合非常紧密。

4.6.1

include>动作

JSP动作允许在JSP页面中包含文件,基本语法如下所示:

includepage="relativeURL|<%=expression%>"flush="true"/>

其中page属性指明了需要包含的文件路径,flush属性必须设为true(JSP默认值为false)。

例如:

includepage=”include/bar..html”flush=true>

includepage=”abc.jsp”flush=true>

include>指令可以包含动态或静态文件,但包含的过程有所不同。

如果文件是动态的,需要经过JSP引擎编译执行,否则只是简单地把文件内容加到主JSP页面中(这种情况和include指令类似)。

但是不能仅从文件名上判断一个文件是动态的还是静态的,比如jspcn.jsp就有可能只是包含一些静态信息而已。

include>能够同时处理这两类文件,因此就不需要在包含时判断此文件是动态的还是静态的。

一切都交给

include>就可以了。

另外需要注意的是,同样是用来包含文件,但

include>动作和<%@include%>指令是有所不同的。

<%@include%>指令是在JSP页面转化成Servlet时才嵌入被包含文件,而

include>动作在页面被请求访问时即被嵌入,因此所含文件的变化总会被检查到,更适合包含动态文件。

如果被包含的文件是动态的,那么还可以通过使用

param>动作元素传递参数名和参数值,这一点读者可以在4.6.4节中通过实例体会。

例4.3中的WhatsNew.jsp中嵌入了四个不同的片断,开发者只需要更新这四个文件片断,主JSP文件就会自动实现更新,因而主JSP文件通常无需作任何改动。

注意该JSP页面在使用

include>动作元素包含其他文件的时候,设置page属性为相对URL路径,flush属性为true。

例4.3

WhatsNew.jsp

<%@pagecontentType="text/html;charset=GBK"%>

what'snew

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2