JSP程序设计教程.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《JSP程序设计教程.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 程序设计 教程
- 资源描述:
-
1、JSP程序设计教程第 3 章 JSP语法n3.1 了解JSP的基本构成n3.2 JSP的指令标识n3.3 JSP的脚本标识n3.4 JSP的注释n3.5 动 作 标 识课件制作人:王国辉 JSP页面的基本构成 今天是:3.1 了解JSP的基本构成 在学习JSP语法之前,首先来初步了解一下JSP页面的基本结构。请看下面的代码:在上面的代码中,并没有包括JSP中的所有元素,但它仍然构成了一个动态的JSP程序。访问包含了该代码的JSP页面后,将显示用户访问该页面的当前时间。暂且不对其功能实现进行讲解,先来介绍该页面的组成元素。课件制作人:王国辉3.1 Java语言基础3.1.1 JSP中的指令标识3
2、.1.2 HTML标记语言3.1.3 嵌入的Java代码片段3.1.4 JSP表达式课件制作人:王国辉3.1.1 JSP中的指令标识 利用JSP指令可以使服务器按照指令的设置来执行动作和设置在整个JSP页面范围内有效的属性。例如,上述代码中的第一个page指令指定了在该页面中编写JSP脚本使用的语言为Java,并且还指定了页面响应的MIME类型和JSP字符的编码;第二个page指令所实现的功能类似于Java中的import语句,用来向当前的JSP文件中导入需要用到的包文件。课件制作人:王国辉3.1.2 HTML标记语言 HTML标记在JSP页面中作为静态的内容,浏览器将会识别这些HTML标记并
3、执行。在JSP程序开发中,这些HTML标记语言主要负责页面的布局、设计和美观,可以说是网页的框架。课件制作人:王国辉3.1.3 嵌入的Java代码片段 嵌入到JSP页面中的Java代码,在客户端浏览器中是不可见的。它们需要被服务器执行,然后由服务器将执行结果与HTML标记语言一同发送给客户端进行显示。通过向JSP页面中嵌入Java代码,可以使该页面生成动态的内容。课件制作人:王国辉3.1.4 JSP表达式 JSP表达式主要用于数据的输出。它可以向页面输出内容以显示给用户,还可以用来动态地指定HTML标记中属性的值。课件制作人:王国辉3.2 JSP的指令标识 指令标识在客户端是不可见的,它是被服
4、务器解释并被执行的。通过指令标识可以使服务器按照指令的设置来执行动作和设置在整个JSP页面范围内有效的属性。在一个指令中可以设置多个属性,这些属性的设置可以影响到整个页面。在JSP中主要包含3种指令,分别是page指令(页面指令)、include指令和taglib指令。指令通常以“”标记结束,以上3种指令的通用格式如下:课件制作人:王国辉3.2 JSP的指令标识下面将分别介绍JSP的3种指令格式。n3.2.1 使用page指令n3.2.2 使用include指令 n3.2.3 使用taglib指令课件制作人:王国辉3.2.1 使用page指令 page指令即页面指令,可以定义在整个JSP页面范
5、围内有效的属性,其使用格式如下:page指令可以放在JSP页面中的任意行,但为了利于程序代码的阅读,习惯上放在文件的开始部分。Page指令具有多种属性,通过这些属性的设置可以影响到当前的JSP页面。例如,在页面中正确设置当前页面响应的MIME类型为text/html,如果MIME类型设置不正确,则当服务器将数据传输给客户端进行显示时,客户端将无法识别传送来的数据,从而不能正确地显示内容。课件制作人:王国辉3.2.1 使用page指令 Page指令中除import属性外,其他属性只能在指令中出现一次。Page指令具有的属性如下:虽然Page指令具有如此多的属性,但在实际编程过程中,并不是每个属性
6、都必须一一列出,其中很多属性可以忽略,此时Page指令将使用这些属性的默认值来设置JSP页面课件制作人:王国辉3.2.1 使用page指令 language属性:设置当前页面中编写JSP脚本使用的语言,默认值为java,例如:上述代码设置了当前页面中使用Java语言来编写JSP脚本,目前只能设置为Java。contentType属性:设置页面响应的MIME类型,通常被设置为text/html,例如:如果该属性设置不正确,如设置为text/css,那么客户端浏览器在显示HTML样式时,不能对HTML标识进行解释,而直接显示HTML代码。课件制作人:王国辉3.2.1 使用page指令 在该属性中还
7、可以设置JSP字符的编码,例如:默认的编码为ISO-8859-1。import 属性:import属性类似于Java中的import语句,用来向JSP文件中导入需要用到的包。在Page指令中可多次使用该属性来导入多个包。例如:或者通过逗号间隔,来导入多个包。课件制作人:王国辉3.2.1 使用page指令 在JSP中已经默认导入了以下包:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*所以,即使没有通过import属性进行导入,在JSP页面中也可以调用上述包中的类。若要在页面中使用编写的JavaBean,也可通过i
8、mport属性来导入。还可以通过动作标识来创建一个JavaBean实例进行调用。课件制作人:王国辉3.2.1 使用page指令 extends属性:extends属性用于指定将一个JSP页面转换为Servlet后继承的类。在JSP中通常不会设置该属性,JSP容器会提供继承的父类。并且如果设置了该属性,一些改动会影响JSP的编译能力。session属性:该属性默认值为true,表示当前页面支持session,设为false表示不支持session。buffer属性:该属性用来设置out对象(JspWriter类对象)使用的缓冲区的大小。若设置为none,表示不使用缓存,而直接通过PrintWri
9、ter对象进行输出;如果将该属性指定为数值,则输出缓冲区的大小不应小于该值,默认值为8KB(因不同的服务器而不同,但大多数情况下都为8KB)。课件制作人:王国辉3.2.1 使用page指令 autoFlush属性:该属性默认值为true,表示当缓冲区已满时,自动将其中的内容输出到客户端。如果设为false,则当缓冲区中的内容超出其设置的大小时,会产生“JSP Buffer overflow”溢出异常。注意:若buffer属性设为none,则autoFlush不能设为false。isThreadSafe属性:该属性默认值为true,表示当前JSP页面被转换为Servlet后,会以多线程的方式来处
10、理来自多个用户的请求;如果设为false,则转换后的Servlet会实现SigleThreadModel接口,该Servlet将以单线程的方式来处理用户请求,即其他请求必须等待直到前一个请求处理结束。课件制作人:王国辉3.2.1 使用page指令 info属性:该属性可设置为任意字符串,如当前页面的作者或其他有关的页面信息。可通过Servlet.getServletInfo()方法来获取设置的字符串。例如:访问页面后,将显示:This is index.jsp!errorPage属性:该属性用来指定一个当前页面出现异常时所要调用的页面。如果属性值是以“/”开头的路径,则将在当前应用程序的根目录
11、下查找文件;否则,将在当前页面的目录下查找文件。课件制作人:王国辉3.2.1 使用page指令 isErrorPage属性:将该属性值设为true,此时在当前页面中可以使用exception异常对象。若在其他页面中通过errorPage属性指定了该页面,则当前者出现异常时,会跳转到该页面,并可在该页面中通过exception对象输出错误信息。相反,如果将该属性设置为false,则在当前页面中不能使用exception对象。该属性默认值为false。【例3-1】errorPage属性及isErrorPage属性的应用isELIgnored属性:通过该属性的设置,可以使JSP容器忽略表达式语言“$
12、”。其值只能为true或false。设为true,则忽略表达式语言。课件制作人:王国辉3.2.1 使用page指令 pageEncoding 属性:该属性用来设置JSP页面字符的编码。默认值为ISO-8859-1。课件制作人:王国辉3.2.2 使用include指令 该指令用于在当前的JSP页面中,在当前使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。该指令的使用格式如下:file属性:该属性指定被包含的文件,该属性不支持任何表达式,也不允许通过如下的方式来传递参数。如果该属性值以“/”开头,那么指定的是一个绝对路径,将在当前应用的根目录下查找文件;如
13、果是以文件名称或文件夹名开头,那么指定的是一个相对路径,将在当前页面的目录下查找文件。课件制作人:王国辉3.2.2 使用include指令 使用include指令引用外部文件,可以减少代码的冗余。例如,有两个JSP页面都需要应用下图所示的网页模板进行布局。其中,这两个页面中的LOGO图片区、侧栏和页尾的内容都不会发生变化。如果通过基本JSP语句来编写这两个页面,会导致编写的JSP文件出现大量的冗余代码,不仅降低了开发进程而且会给程序的维护带来很大的困难。为了解决该问题,可以将这个复杂的页面分成若干个独立的部分,将相同的部分在单独的JSP文件中进行编写。LOGO图片区:top.jsp侧栏left
14、.jsp内容显示区:main.jsp页尾:end.jsp课件制作人:王国辉3.2.2 使用include指令 这样在多个页面中应用上述的页面模板时,就可通过include指令在相应的位置上引入这些文件,从而只需对内容显示区进行编码即可。类似的页面代码如下:在这里对内容显示区进行编码 课件制作人:王国辉3.2.3 使用taglib指令 在JSP页面中,可以直接使用JSP提供的一些动作元素标识来完成特定功能,如使用包含一个文件。通过使用taglib指令,开发者就可以在页面中使用这些基本标识或自定义的标识来完成特殊的功能。taglib指令的使用格式如下:uri属性:该属性指定了标签描述符,该描述符是
15、一个对标签描述文件(*.tld)的映射。在tld标签描述文件中定义了该标签库中的各个标签名称,并为每个标签指定一个标签处理类。课件制作人:王国辉3.2.3 使用taglib指令 prefix属性:该属性指定一个在页面中使用由uri属性指定的标签库的前缀。前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw。开发者可通过前缀来引用标签库中的标签。以下为一个简单的使用JSTL的代码:该段代码通过标签将hello值赋给了变量name。课件制作人:王国辉3.3 JSP的脚本标识 在JSP页面中,脚本标识使用得最为频繁。因为它们能够很方便、灵活地生成页面中的动态内容,特
16、别是Scriptlet脚本程序。JSP中的脚本标识包括以下三种元素:声明标识(Declaration)、JSP表达式(Expression)和脚本程序(Scriptlet)。通过这些元素,就可以在JSP页面中像编写Java程序一样来声明变量、定义函数或进行各种表达式的运算。在JSP页面中需要通过特殊的约定来表示这些元素,并且对于客户端这些元素是不可见的,它们由服务器执行。课件制作人:王国辉3.3 JSP的脚本标识n3.3.1 JSP表达式(Expression)n3.3.2 声明标识(Declaration)n3.3.3 脚本程序(Scriptlet)课件制作人:王国辉3.3.1 JSP表达式
17、 表达式用于向页面中输出信息,其使用格式为:特别要注意,“%”与“=”之间不要有空格。JSP表达式在页面被转换为Servlet后,转换为了out.print()方法。所以JSP表达式与JSP页面中嵌入到小脚本程序中的out.print()方法实现的功能相同。如果通过JSP表达式输出一个对象,则该对象的toString()方法会被自动调用,表达式将输出toString()方法返回的内容。JSP表达式可以应用到以下几种情况。(1)向页面输出内容,例如下面的代码:课件制作人:王国辉3.3.1 JSP表达式(2)生成动态的链接地址,例如下面的代码:用户名:(3)动态指定Form表单处理页面,例如下面的
18、代码:运行该段代码将显示:用户名:xxxa href=链接到welcom.jsp运行该段代码将生成下面的HTML代码:链接到welcome.jspform action=运行该段代码将生成下面的HTML代码:课件制作人:王国辉(4)为通过循环语句生成的元素命名,例如下面的代码:%for(int i=1;i file:input type=text name=运行该段代码将生成下面的HTML代码:file1:file2:3.3.1 JSP表达式课件制作人:王国辉3.3.2 声明标识(Declaration)在JSP页面中可以声明变量或方法,其声明格式为:特别要注意,在“%”与“!”之间不要有空格
19、。声明的语法与在Java语言中声明变量和方法时是一样的。在页面中通过声明标识声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为Java类后类中的属性和方法。并且它们会被多个线程即多个用户共享。也就是说,其中的任何一个线程对声明的变量或方法的修改都会改变它们原来的状态。它们的生命周期从创建到服务器关闭后结束。下面将通过一个具体实例来介绍声明标识的应用。【例3-2】一个简单的网站计数器课件制作人:王国辉3.3.3 脚本程序(Scriptlet)脚本程序是在JSP页面中使用“”标记起来的一段Java代码。在脚本程序中可以定义变量、调用方法和进行各种表达式运算,且每行语句后面要加入分号
20、。在脚本程序中定义的变量在当前的整个页面内都有效,但不会被其他的线程共享,当前用户对该变量的操作不会影响到其他的用户。当变量所在的页面关闭后就会被销毁。脚本程序使用格式如下:脚本程序的使用比较灵活,它所实现的功能是JSP表达式无法实现的。【例3-3】脚本程序的应用课件制作人:王国辉3.4 JSP的注释 在JSP页面中可以应用多种注释,如HTML中的注释、Java中的注释和在严格意义上说属于JSP页面自己的注释:带有JSP表达式和隐藏的注释。在JSP规范中,它们都属于JSP中的注释,并且它们的语法规则和运行的效果有所不同。下面将介绍JSP中的各种注释。n3.4.1 HTML中的注释n3.4.2
21、带有JSP表达式的注释n3.4.3 隐藏注释 n3.4.4 脚本程序(Scriptlet)中的注释 课件制作人:王国辉3.4.1 HTML中的注释 JSP文件是由HTML标记和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用。注释格式如下:【例3-4】HTML注释的应用课件制作人:王国辉3.4.2 带有JSP表达式的注释 在HTML注释中可以嵌入JSP表达式,注释格式如下:!-comment-包含该注释语句的JSP页面被请求后,服务器能够识别注释中的JSP表达式,从而来执行该表达式,而对注释中的其他内容不做任何操作。当服务器将执行结果返回给客户端后,客户端浏览器会
22、识别该注释语句,所以被注释的内容不会显示在浏览器中。【例3-5】带有JSP表达式注释的应用课件制作人:王国辉3.4.3 隐藏注释 在前面已经介绍了如何应用HTML中的注释,这种注释虽然在客户端浏览页面时不会看见,但它却存在于源代码中,可通过在客户端查看源代码看到被注释的内容。所以严格来说,这种注释并不安全。下面将介绍一种隐藏注释,注释格式如下:使用该方法注释的内容,不仅在客户端浏览时看不到,而且即使是通过在客户端查看HTML源代码,也不会看到,所以安全性较高。【例3-6】隐藏注释的应用课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释 在脚本程序中所包含的是一段Java代码,
23、所以在脚本程序中的注释和在Java中的注释是相同的。脚本程序中包括下面3种注释方法。/注释内容该方法进行单行注释,符号“/”后面的所有内容为注释的内容,服务器对该内容不进行任何操作。因为脚本程序在客户端通过查看源代码是不可见的,所以在脚本程序中通过该方法被注释的内容也是不可见的,并且在后面将要提到的通过多行注释和提示文档进行注释的内容都是不可见的。1单行注释单行注释的格式如下:课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释【例3-7】单行注释的应用/*注释内容1 注释内容2 */为了程序代码的美观,开发员习惯上在每行的注释内容前面加入一个“*”号,构成以下的注释格式:2多
24、行注释多行注释的是通过“/*”与“*/”符号进行标记,它们必须成对出现,在它们之间输入的注释内容可以换行。注释格式如下:课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释【例3-8】多行注释的应用3提示文档注释同单行注释一样,在“/*”与“*/”之间被注释的所有内容,即使是JSP表达式或其他的脚本程序,服务器都不会做任何处理,并且多行注释的开始标记和结束标记可以不在同一个脚本程序中同时出现。/*注释内容1*注释内容2*/课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释 该种注释会被Javadoc文档工具生成文档时所读取,文档是对代码结构和功能的描述。注释格
25、式如下:/*提示信息1 提示信息2 */该注释方法与前面介绍的多行注释很相似,但细心的读者会发现它是以“/*”符号作为注释的开始标记,而不是“/*”。与多行注释一样,被“/*”和“/*”符号注释的所有内容,服务器都不会做任何处理。课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释 在Eclipse开发工具中向创建的JSP文件输入下面的代码,然后将鼠标指针移动到指定的代码上,将会出现提示信息。当前访问次数:课件制作人:王国辉3.4.4 脚本程序(Scriptlet)中的注释将鼠标指针移动到代码上,将出现下图如图所示的提示信息。课件制作人:王国辉3.5 动 作 标 识 在JSP中
展开阅读全文