T4 JSP页面与标记.ppt_第1页
T4 JSP页面与标记.ppt_第2页
T4 JSP页面与标记.ppt_第3页
T4 JSP页面与标记.ppt_第4页
T4 JSP页面与标记.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 JSP基本语法,JSP基本原理 JSP语法 JSP的元素 脚本元素(Scripting Elements) JSP指令元素(Directives Elements) JSP动作元素(Action Elements) 页面的复用技术,在本节中,您将了解以下内容: 什么是JSP JSP的执行过程,JSP基本原理,JSP基本原理,一、什么是JSP,JSP基本原理,纯Servlet编写的网站? Servlet是功能非常强大的Web组件,用它可以实现非常复杂的Web应用逻辑。虽然可以使用Servlet生成用户页面,但是有以下问题: java代码和HTML语句混杂在一起,使得当客户端的显示需要调整

2、时,必须修改源代码,并重写译servlet。 由于Servlet模糊了内容的提供与内容的表示的区别、在servlet类中出现大量的HTML文本使得servlet很难维护 也就是说,Servlet的长处在于处理逻辑,而不是处理表示。 为了方便地处理表示,可使用JavaServerPage(Java 服务器页面),一、什么是JSP,JSP基本原理,换一种思路 既然Servlet的长处在于处理逻辑,而不是处理表示。我们希望有一种技术,其长处在于处理表示,以弥补Servlet的缺点。这就是JSP。 JSP( JavaServer Pages )是由Sun 公司倡导、许多其他公司参与一起建立的一种新动态

3、网页技术标准。JSP页面从形式上就是在传统的网页HTML 文件( *.htm,*.html )中加入Java程序片段( Scriptlet )和JSP标签。 Servlet/JSP容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。其中程序片段可以操作数据库、重新定向网页以及发送 E-Mail 等等, 这些都是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为Server-SideLanguage,一、什么是JSP,JSP基本原理,第一个JSP页面 JSP页面从形式上看就是

4、在HTML文档中嵌入了一些java代码。 -Helloworld.JSP- CH5 - helloworld.jsp ,标记中的是Java代码,该代码在响应用户请求时才动态运行。,一、什么是JSP,JSP基本原理,JSP页面的好处 动态页面。当JSP页面被访问时,JSP会生成不同的动态页面; JSP页面是由容器解释执行的。因此,网站维护人员不必安装Java开发工具就可以方便的使用Notepad等修改; JSP完全与Servlet规范兼容。实际上,JSP总是被翻译成Servlet目标代码并在Web应用中缓存起来,以加快相应速度; JSP页面与HTML兼容。JSP页面与普通HTML页面并无根本区别

5、,具有HTML编程体验的程序员很容易上手。,当用户访问JSP页面时,JSP页面的处理过程如图所示:,二、JSP的执行过程,JSP基本原理,当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML文本)和动态数据(java脚本)全部转换为java代码, 这个转换工作实际上是非常直观的,对于HTML文本只是简单的用out.println()方法包裹起来,对于java脚本只是保留或做简单的处理。,随即,JSP引擎把生成的.java文件编译成servlet类文件(.class)。 对于Tomcat服务器而言,生成的class文件默认的情况下存放在work目录下 。,编译后

6、的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面,HTML格式的响应页面返回到客户端,二、JSP的执行过程,JSP基本原理,转译和请求 在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(RequestTime) 。 转译时期:JSP 网页转译成Servlet 类,然后编译成Class文件; 用户请求处理时期:Servlet 类执行后,响应结果至客户端。,转译,请求,二、JSP的执行过程,JSP基本原理,转译结果的缓存,在Tomcat中,部署一个名为Hello的Web应用。,将helloworld.jsp部署在/hello

7、下。,Tomcat将所有Web应用的一份缓存保存在workStandalonelocalhost下。但是现在没有hello应用。这是因为还没有客户访问该应用。,当在浏览器中访问hello/helloworld.jsp后,Tomcat执行转译工作,并将转译结果缓存到work目录下。,两个文件被生成: hellowork$jsp.class helloworld$jsp.java,二、JSP的执行过程,JSP基本原理,转译的结果 - helloworld$jsp.java - package org.apache.jsp;import javax.servlet.*;public class he

8、lloworld$jsp extends HttpJspBase public final void _jspx_init() public void _jspService(HttpServletRequest req, HttpServletResponse resp) public void _jspDestroy() ,二、JSP的执行过程,JSP基本原理,public final void _jspx_init() _jspInit( ):当JSP 网页一开始执行时,最先执行此方法。因此,我们通常会把初始化的工作写在此方法中。,二、JSP的执行过程,JSP基本原理,public vo

9、id _jspDestroy() _jspDestroy()是JSP 网页最后执行的方法。通常在此执行与资源释放相关的工作,如释放文件、释放内存、释放数据库连接等。,二、JSP的执行过程,JSP基本原理,void _jspService(HttpServletRequest req, HttpServletResponse resp) 该方法处理用户请求。 转译过程中JSP网页最主要的代码都是在此方法中。如: out.write(rnrnrnCH5 helloworld.jsp+ rnrnrn); out.println(Helloworld,JSP!); out.write(rnrn); ,

10、二、JSP的执行过程,JSP基本原理,JSP的本质 public class helloworld$jsp extends HttpJspBase ,二、JSP的执行过程,JSP基本原理,关于效率: JSP页面的转译、编译工作是在该页面第一次被访问时进行的。所以JSP引擎在第一次处理JSP请求时,请求用户在收到响应前可能有较长的延迟。但在后续的请求中,这些工作都已经完成,时间延迟问题将不复存在。也就是说,当处理后续的用户访问时, JSP和Servlet的执行速度是一样的。,第2章 JSP基本语法,JSP基本原理 JSP语法 JSP的元素 脚本元素(Scripting Elements) JSP

11、指令元素(Directives Elements) JSP动作元素(Action Elements) 页面的复用技术,在本节中,您将了解: 一、元素 (Elements)与模板数据(Template Data) 二、注释 客户端可以看到的批注 开发程序员专用的批注 三、转义,JSP语法,JSP语法,JSP 网页主要分为元素 (Elements)与模板数据(Template Data)部分 -Helloworld.JSP- CH5 - helloworld.jsp ,JSP语法,一、元素 (Elements)与模板数据(Template Data),模板数据:JSP容器 不处理的部分,例如HTM

12、L 的内容,会直接送到Client 端执行。,元素:必须经由JSP 容器 处理的部分,而大部分元素都以XML 作为语法基础,并且大小写必须要一致。,一、元素 (Elements)与模板数据(Template Data),JSP语法,元素有两种表达式 第一种为起始标签(包含Element 名称、属性),中间为一些内容,最后为结尾标签。如下所示: body 另一种是标签中只有元素的名称、属性,称为空元素(Empty Elements)。如下所示: 元素有三种类型 指令元素(Directive Elements) 脚本元素(Scripting Elements) 动作元素(Action Elemen

13、ts)。,JSP语法,概念 JSP注释是程序员写入JSP的、不影响运行结果的程序注解。它的目的一般在于对程序元素的功能进行说明。注解必须使用特殊的标记以区别于HTML模板和元素。 分类 客户端可以看到的批注: -例如: -在客户端的HTML 源文件中显示为: 开发程序员专用的批注: 或者 ,二、注释,JSP语法,-JSP页面程序如下- -CH5 A Comment TestA Test of Comments -从用户的浏览器中,看到的源代码如下-A Comment TestA Test of Comments,二、注释,JSP语法,概念 在JSP页面中, 等符号都是有特殊用途的。如JSP是以

14、标签作为代码结束。所以当需要在JSP 代码中输出 这些符号时,应该进行转义。 CH5 - escape1.jsp 转义示例程序2 ,三、转义,第2章 JSP基本语法,JSP基本原理 JSP语法 JSP的元素 脚本元素(Scripting Elements) JSP指令元素(Directives Elements) JSP动作元素(Action Elements) 页面的复用技术,声明(Declarations) 小脚本(Scriptlets) 表达式 (Expressions),脚本元素(Scripting Elements),例子=3); ;%,脚本元素(Scripting Elements

15、),一、声明(Declarations),脚本元素(Scripting Elements),概念 在JSP 程序中,使用声明来为JSP页面中的Java代码定义合法的变量和方法。 语法 声明是以 为结尾。中间以;号分隔各语句。 ,可以将多个声明写入一行,中间用分号分隔。,也可以将每条声明写入单独一行。但最后仍要有分号。,在声明中编写方法,只要遵循一般的Java语法即可。,所有这些声明一定要包含在标记对之间。,一、声明(Declarations),脚本元素(Scripting Elements),使用声明的注意事项 使用可以声明在JSP 程序中要用的变量和方法,可以一次声明多个类变量和方法,只要最

16、后以分号“;”结尾就行,当然这些声明在Java 中要是合法的。 每一个声明仅在一个页面中有效,如果想每个页面都用到一些声明,最好把它们写成一个单独的JSP 网页,然后用或元素包含进来。 使用方式所声明的变量是类成员变量。在helloworld.jsp页面中声明的变量,在转译后将成为Servlet类helloworld$jsp的成员变量。因此,同其他Servlet类一样,我们必须慎重处理同步访问问题。,例子 You must input your name.,二、小脚本( Scriptlet ),脚本元素(Scripting Elements),概念 Scriptlet是在JSP页面中嵌入的、包

17、含Java代码的程序片段。所有满足Java标准语法的代码都可在Scriptlet中出现。通常对客户请求进行的处理也都写在这里面 语法 Scriptlet以 为结尾。如: ,二、小脚本( Scriptlet ),脚本元素(Scripting Elements),使用小脚本的注意事项 JSP容器在转译JSP页面时,会将包含在中的Java代码原封不动地保留在Servlet类的_jspService()方法中,即在内定义的变量将是_jspService()方法的局部变量,而在内定义的代码将在jspService()方法中被执行。 由于在内定义的变量是_jspService()方法的局部变量,JSP将为

18、每个客户线程保存单独的拷贝,因此不存在用定义的类变量的多线程同步问题,使用上是线程安全的。 当JSP收到客户端的请求时,会调用_jspService()方法,因此Scriptlet 就会被执行,如同Servlet的doGet()、doPost(),如果Scriptlet 有显示的内容会被存在out 对象中,然后再利用out 对象中的println()方法显示出结果。,三、表达式( Expressions ),脚本元素(Scripting Elements),概念 在JSP页面中,一个Expressions在被JSP引擎执行后会被自动转化为字符串,然后显示出来。 语法 Expressions 标

19、签是以 为结尾,其中间内容包含一段合法的Java表达式, 例如 ,三、表达式( Expressions ),脚本元素(Scripting Elements),使用表达式的注意事项 不能使用分号“;”来作为表达式的结束符号,如下: 是错误的。同样的表达式,用在Scriptlet中就需要以分号来结尾。 我们可以通过查看JSP转义生成的Servlet源程序,来了解JSP容器是如何处理的,例如,JSP代码 在生成的Servlet源文件中,将会以下面的形式出现在_jspService方法中: out.println(new java.util.Date();由此可见,JSP容器对表达式元素的处理是非常简

20、单的,它所做的工作只是在JSP表达式外包装了out.println()方法。,第2章 JSP基本语法,JSP基本原理 JSP语法 JSP的元素 脚本元素(Scripting Elements) JSP指令元素(Directives Elements) JSP动作元素(Action Elements) 页面的复用技术,在本节中,您将了解到 什么是JSP指令 JSP指令的分类,包括: Page指令 Include指令 Taglib指令,JSP指令元素(Directives Elements),JSP指令元素(Directives Elements),什么是JSP指令,指令元素(Directives

21、 Elements),JSP指令的用途非常简单,它只是告诉JSP引擎对JSP页面如何编译。因此它不包含业务逻辑,也不修改out流。 JSP指令在使用时的一般形式为: 其中,可用下列关键字替代directive占位符: Page Include Taglib,JSP指令的一般书写格式,指令元素(Directives Elements),JSP指令在使用时的一般形式为: 这种形式虽然简单明了,但是不符合XML规范。JSP指令的内部就是一些指令和和一连串的属性设定,如下所示: 亦可以写成: ,一、Page指令,指令元素(Directives Elements),功能 page 指令是最复杂的JSP指

22、令,它的主要功能为设定整个JSP 网页的属性和相关功能。具体是设置哪种功能,是由其属性指定的。 基本语法 page 指令是以结束: 然而像所有JSP 标签元素一样,page 指令也支持另一种以XML为基础的语法,如下所示: ,一、Page指令,指令元素(Directives Elements),属性 Page指令使用属性表明其功能。如: 需要说明的是page指令的属性只有import可以重复设定,其他则不可以。如下面的page 指令示例是非法的,因为session 属性重复设定两次:,Page指令中常见的属性,一、Page指令,指令元素(Directives Elements),Page指令的

23、转译, page Comparing Apples and Oranges QuarterApplesOranges First Quarter23073476 Second Quarter14534132 Third Quarter48924332 Forth Quarter34022543 ,response.setContentType(application/vnd.ms-excel; charset=GBK);,二、Include指令,指令元素(Directives Elements),概念 include 指令用于指示JSP容器在JSP 编译时插入一个包含文本或代码的文件,这个包含

24、的过程是静态的,而包含的文件可以是JSP 网页、HTML 网页、文本文件,或是一段Java 程序。 语法 include 指令的语法如下: include 指令只有一个属性,那就是file,而relativeURLspec 表示此file 的路径。像所有JSP 标签元素一样,include 指令也支持以XML 为基础的语法,如下所示:,二、Include指令,指令元素(Directives Elements),要注意事项 包含文件中要避免使用、,因为这将会影响在原来JSP 网页中同样的标签,这样做有时会导致错误; 指令是一种静态的SSI(服务器端包含)。1、所谓的静态是指file不能为一变量,例如: 而以下指令是错误的: ” %2、SSI意味着不可以在file 所指定的文件后接任何参数,如下: 同时,file 所指的路径必须是相对于此JSP 网页的路径。,二、Include指令,指令元素(Directives Elements),-Helloworld.html - Say Hello from Helloworld.html - Include.jsp- CH5 - Include.jsp include 指令 ,- Include.jsp- CH5 - Include.jsp include 指令 Sa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论