已阅读5页,还剩99页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 JSP概述能力目标: 了解什么是JSP 学会jsp环境的搭建 能使用tomcat设置虚拟目录和端口号任务训练: 任务1:jsp环境搭建 任务2:设置tomcat虚拟目录知识: 掌握 什么是 JSP 熟悉 JSP 的工作原理 掌握 tomcat的安装和使用 掌握虚拟目录,端口号的设置重点: JSP 的工作原理及环境搭建难点: 虚拟目录1.1. 网页设计基础知识1.1.1 万维网(WWW)是世界上最大的电子信息仓库,由众多的Web站点组成。每个Web站点都包含一些特定的资源,这些资源存放于一台或多台被称作Web服务器的计算机之上。正式大量的Web站点提供了丰富多彩的资源,才能够使得用户能够通过网络快速高效地获取他们需要的资源。如电子商务网站(阿里巴巴等)、以及我们日常使用的教务管理系统,以及UFS等等一些系统。1.1.2 网页的分类 静态网页:是指一旦网页制作成功就不能随意更改或需要专业的技术人员进行修改。 不能实现用户与服务器之间的交互,制作周期较长,更改困难,适应于一些不需要经常修改内容的网页。 静态网页执行过程: 任何Web服务器都支持静态网页: 首先用户在浏览器的地址栏中键入要访问的地址,并回车触发请求(或者通过通过点击超级链接的方式触发)。 浏览器将请求发送到指定的Web服务器上。 Web服务器接收请求并根据htm或html后缀判断所请求的静态网页 Web服务器从硬盘或者内存中读取正确的htm页面,然后将其送回用户浏览器。 动态网页:是指能够根据用户的请求而动态生成显示的结果。 不需要维护人员经常手动更新,它能够根据不同的时间,不同的人产生不同的页面。 目前绝大多数的网站采用的都是动态网页技术如JSP、ASP、ASP.net、PHP以及CGI技术等。 动态网页技术根据实现的不同还可以分为: 客户端动态网页技术 服务器端动态网页技术1.1.3 客户端动态网页技术 客户端的浏览器在接收到服务器端传送而来的资源时,还需要负责对其中的VBSript或javaScript脚本进行解释执行,并产生动态效果。 实现的语言有:javaScript和VBScript脚本语言。1.1.4 服务器端动态网页技术 服务器端动态网页技术和我们前面讨论的两种运行原理不同: 首先用户在浏览器的地址栏中键入要访问的地址,并回车触发请求(或者通过通过点击超级链接的方式触发)。 浏览器将请求发送到指定的Web服务器上。 Web服务器接收请求并根据后缀(如.jsp、php)判断所请求的动态网页。 Web服务将这个动态网页文件从头到尾执行,并根据执行的结果生成相应的HTML文件 将生成的HTML文件送回浏览器 用户端的浏览器对这些HTML文件进行解析并显示1.1.5 软件的体系结构 客户机/服务器(Client/Server,C/S)模式: 服务器只集中管理数据,计算任务分散在客户机上,客户机和服务器之间通过网络协议来进行通讯;客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。 另外一种情形是,客户端先进行简单的预处理,然后将处理后的结果再提交给服务器进行进一步的处理。这种模式我们也通常成为胖客户端模式。 浏览器/服务器(Browser/Server,B/S)模式:客户端使用通用的浏览器(如:NetScape、Explorer或FireWork)代替各种应用软件,服务器则为Web服务器。浏览器和服务器之间通过TCP/IP通信协议进行连接,浏览器发出请求,由Web服务器向后台取出数据进行计算,并将结果返回给浏览器。这种模式,我们通常将其成为瘦客户端模式。N层结构:为了软件开发和维护的需要,我们通常将服务器端分为多个层次,有的专门负责页面显示,有的专门负责逻辑处理,有的专门负责数据处理,这样前面所讲的两层结构又演变成三层结构或N层结构,如下图所示:1.2. JSP简介 JSP是Java Server Pages的缩写,是由Sun 公司倡导、许多其他公司参与一起建立的一种应用范围广泛的动态网页技术标准,JSP是目前应用最广泛的动态网页技术之一 。 它是基于JAVA语言的动态网页技术, 实现方式将Java脚本嵌入到HTML网页中。 主要解决的问题:创建基于B/S架构的动态网站。1.2.1 JSP文件结构. 其他 HTML 语言 JSP文件结构及主要标签 其他 HTML 语言 一个JSP页面由普通HTML标记、JSP规定的JSP标记和通过“”加入的Java程序片组成。例如example1_1.jsp:这是一个简单的JSP页面 % int i, sum=0; for(i=1;i 1到100的连续和是: 1.2.2 JSP运行原理当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,然后将此Java文件编译成字节码文件,通过执行字节码文件相应客户的请求。当这个JSP页面再次请求执行时,JSP引擎将直接执行字节码文件来响应客户客户的请求,这也是JSP比ASP快的一个原因。字节码文件的主要工作如下: 把JSP页面中的HTML标记符号交给客户的浏览器负责显示 负责处理JSP标记,并将有关的处理结果发送给客户的浏览器 执行“”之间的Java程序片,并把执行的结果交给客户的浏览器显示 当多个客户请求一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应客户的请求。这比传统的CGI为每个客户启动一个进程效率要高的多。1.2.3 JSP的优点 (1)将内容的生成和显示分离 用HTML或者XML标签来设计和格式化最终页面,用JSP标签或者小脚本来生成页面上的动态内容。 (2)使用可重用的组件 绝大多数JSP页面依赖于跨平台的、可重用的组件来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户所使用。 (3)采用标签简化页面开发 Web开发人员不一定都是熟悉Java 语言的程序员。JSP 技术能够将许多功能封装起来,成为一个自定义的标签,这些功能是完全根据XML 的标准来制订的。JSP 技术中的标签库(TagLibrary)中标准的JSP标签能够访问和实例化JavaBeans组件,设置或者检索组件属性,以及执行用其它方法较难编码的功能。 (4)具有Java技术的所有好处,完善的存储管理和安全性 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都要被编译成Java Servlet,所以JSP页面就具有Java技术的所有优点,包括健壮的存储管理、安全性以及跨平台性。 (5)一次编写,随处运行 作为Java 技术的一部分,JSP拥有Java语言“一次编写,各处执行”的特点。这一点对企业用户尤其重要,当企业更换服务器平台时,并不影响之前所投下的成本、人力所开发的JSP应用程序。1.2.4 JSP的不足 要求开发者必须熟悉java语言 要想完全掌握JSP的功能,利用JSP开发功能强大的Web应用程序,必须熟悉Java语言。 调试较为困难 根据前面讲解的JSP运行原理,开发者编写的是JSP文件,但是经过编译处理以后形成的是Java文件,调试出错时实际指向的是处理后的java文件而非JSP,这样程序调试起来就比较困难。1.3. JSP环境的搭建JSP环境的搭建主要包含三个部分: JDK Web服务器,即JSP引擎(Tomcat) JSP编辑环境1.3.1 JDKSun公司提供的Java开发工具包,是JSP不可缺少的开发环境之一,在安装JSP服务器之前必须安装和配置(注:有的Web服务器本身就已经内置了JDK,此时就不需要安装JDK了)。安装过程:l 进入Sun公司的网站: 下载J2SE提供的JDK1.5(也称为JDK5),假设安装目录是D:jdk1.5。l 系统环境变量的设置:右击“我的电脑”-属性-高级-环境变量变量名:JAVA_HOME,变量值:D:jkd1.5变量名:CLASSPATH,变量值:D:jkd1.5jrelibrt.jar变量名:PATH,变量值:D:jkd1.5bin注:若已经存在以上变量,则可双击其进行编辑,将需要的值加入即可。1.3.2 Web服务器(JSP引擎)Web服务器,目前有很多的Web服务器可供选择,如SUN Application Server 、Bea Weblogic、IBM的WebSphere Server,Apache Tomcat、Resin等等。 在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范,但是目前还不支持EJB。1. 安装过程:l 下载appache-tomcat-5.5.20.zip或者下载jakarta-tomcat-5.5.20.exel 执行Tomcat安装目录中的bin文件夹中的startup.bat或tomcat5.exe来启动tomcat服务器,建议用startup.bat启动,以确保Tomcat服务器使用的是java_home环境变量设置的JDK。Tomcat服务器占用的默认端口号是8080,在地址栏输入:8080即可出现如下所示的启动界面:可以通过修改conf文件夹下的主配置文件server.xml来更改端口号:用记事本打开server.xml,找到将其更改,重新启动Tomcat服务器即可。注意:若服务器所在的机器没有启动其他的占有80端口号的网络程序,也可以讲端口号改为80,这样用户访问Tomcat服务器时可以省略端口号。2. Tomcat目录结构 bin目录存放启动和关闭Tomcat的文件 conf目录存放Tomcat的各种配置文件 logs目录存放Tomcat的日志文件 Src目录存放Tomcat相关的源代码 temp目录存放Tomcat的各种临时文件 webapps目录存放Web应用 Work目录存放JSP转换后的Servlet文件(包括*.java和*.class文件)3. Tomcat配置文件 Server.xml是Tomcat的全局配置文件,提供Tomcat的初始配置,并描述了Tomcat的结构和含义 Web.xml用来描述Web应用的部署信息,使得Tomcat知道如何部署应用程序 Tomcat-users.xml对Tomcat的用户进行管理4. 设置web服务目录 根目录:如果Tomcat服务器的安装目录是D:appache-tomcat-5.5.20,那么Tomcat的Web服务目录的根目录是D:appache-tomcat-5.5.20webappsRoot。在根目录下存放a.jsp,则运行时直接在地址栏输入::8080/a.jsp即可。 已有的Web服务目录:Tomcat服务器安装目录的webapps目录下的任何一个子目录都可以作为web服务目录,也可以在webapps下自己建立一个新的web服务目录。例如在webapps下建立char1目录,其下放a.jsp文件,则运行时在地址栏输入:8080/char1/a.jsp即可。 建立新的web服务目录:可以将计算机上某个目录设置成一个web服务目录,并为该目录指定虚拟目录。例如要将C:sun作为Web服务目录,并让用户使用hello虚拟目录访问它,则可以在conf文件夹的server.xml文件中的之前加入即可,(注意XML文件区分大小写,server.xml修改后,必须重新启动Tomcat服务器)这样就可以将a.jsp放在c:sun中,并通过输入:8080/hello/a.jsp来访问。提示:学习或使用JSP的过程中,不提倡将所有的JSP页面放在Tomcat服务器的根目录中,应当善于建立新的web服务目录,以便有效地管理JSP页面。1.3.3 JSP编辑环境JSP的编写实际不需要任何特定工具的,只要能够编写文本文件的编辑器即可,但是为了提高开发效率,我们一般使用一些集成编辑环境加快开发速度。本课程中前面章节我们用记事本,后面章节为了提高效率我们使用Eclipse或MyEclipse。Eclipse/MyEclipse(myeclipse在eclispe的基础上加了若干的插件集):Eclipse/MyEclipse是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。尽管Eclipse/MyEclipse是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse/MyEclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。1.4. JSP与Java Servlet的关系Java Servlet是java语言的一部分,是编写在服务器端创建对象的Java类,习惯上称之为Servlet类。在JSP技术出现之前,Web应用开发人员就是自己编写、编译Servlet类。Java Servlet的最大缺点是不能有效地管理页面的逻辑部分和页面的输出部分,导致Servlet类的代码非常混乱;为了克服servlet的缺点,Sun公司推出了JSP。JSP技术就是以Java Servlet为基础,提供了Java Servlet几乎所有的好处,当客户请求一个JSP页面时,Tomcat服务器自动生成Java文件、编译Java文件,并用编译得到的字节码文件在服务器端创建一个servlet对象。有些Web应用可能只需要JSP+Javabean(第4章)就能设计的很好,对于某些Web应用,就可能需要JSP+Javabean+servlet(第8章)来完成。1.5. 小结 JSP技术是开发Web应用的先进技术,目前流行的JSP引擎之一是Tomcat。 安装Tomcat必须首先安装JDK,并需要设置JAVA_HOME环境变量 JSP页面必须保存在Web服务目录中,Tomcat服务器的Webapps下的目录都可以作为Web服务目录,如果想让webapps以外的其他的目录作为web服务目录,必须修改conf文件夹下的server.xml文件并重新启动tomcat服务器。 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,然后将此Java文件编译成字节码文件,通过执行字节码文件相应客户的请求。 当多个客户请求一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应客户的请求。第2章 JSP语法能力目标: 学会页面中注释的添加方法 学会使用JSP 的脚本元素设计动态页面 学会使用JSP指令设计包含两或三个页面动态页面任务训练: 任务1:课本例题 任务2:设计包含两或三个动态页面知识: 熟悉JSP页面的基本结构 变量和方法的声明 熟悉 JSP 中Java程序片和Java表达式的使用格式 掌握 JSP 中注释的添加方法 掌握 Page 指令、Include 指令的使用 熟悉并掌握常见动作标记的使用重点: 变量方法的声明 Page 指令、Include 指令的使用 常见动作标记的使用难点: Page 指令、Include 指令的使用2.1 JSP页面的基本结构JSP页面可由5种元素组合而成: 普通的HTML标记符; JSP标记,如指令标记、动作标记; 成员变量和方法的声明; Java程序片; Java表达式 例1: example2._1.jsp2.2 JSP页面的成员变量和方法 1.在JSP页面的标记符“”之间声明的变量称作JSP页面的成员变量 .(整个页面有效,与书写位置无关,类的成员变量,线程共享)例2:example2_2.jsp2. JSP页面在“”之间声明定义的方法(整个页面有效,方法内变量只在方法内有效)例3:Example2_3.jsp2.3 Java程序片 在“”之间插入Java程序片 程序片中声明的变量称为JSP页面的局部变量,在程序片中声明的局部变量在JSP页面后继的所有Java程序片及表达式部分内有效; 多个客户请求一个JSP页面时 , Java程序片将被执行多次,分别在不同的线程中执行 。 多个线程共享成员变量,若一个线程执行成员变量的程序片时不希望别的线程同时操作该成员变量,可以将操作该成员变量的方法用synchronized进行修饰,例4:Example2_4.jsp ; 一个Java程序片可以分割成几个Java程序片,分割程序片之间插入其他标记元素 ,见例5:Example2_5.jsp2.4 Java表达式 1. “”之间可以是一个Java表达式 .2. 表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。 * 不可插入语句,必须能求值,%和=之间不能有空格)例6:Example2_6.jsp2.5 JSP中的注释 提高程序的可阅读性;位置要适当、便于理解。l Html注释:会输出到客户端浏览器,但不进行显示;当客户通过浏览器查看页面源文件时能够看到该类型的注释。格式为:l JSP注释:用于描述JSP程序代码,不会被JSP引擎解释,也不会输出到客户端。格式为:l Java注释 由于jsp是在html中嵌入java代码,因此java本身的注释机制在JSP中照样可以使用,不会受到任何影响。/comment或者/*comment*/例7:Example2_7.jsp2.6 JSP 指令标记指令(Directive):该元素的作用是在将JSP源文件解析成Java文件时指示JSP引擎做出相应的操作,从而达到预期的目的。JSP指令在整个页面范围内有效,且不在客户端产生任何输出。基本格式为常见的指令有:page、include2.6.1 page 指令标记page 指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值 ,也可以使用多个page指令分别为每个属性指定值。page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。例如: 或 page 指令标记可以指定如下属性的值:contentType、import、language、session、buffer、auotFlush 、isThreadSafe、pageEncoding contentType属性 contentType 属性值确定JSP页面响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码。 例如: 不允许两次使用page 指令给contentType属性指定不同的属性值 contentType属性指定的值:text/html text/plain image/gif image/x-xbitmapImage/jpeg 如果客户的浏览器不支持某种 MIME类型,用户的浏览器就无法用相应的手段处理所接收到信息例8:first.jsp;second.jsp;third.jsp erroPage属性指定当前页面产生异常时的处理文件。当前页面发生错误时候,由该目标文件进行异常处理,JSP容器会将处理结果发送到浏览器显示。例如,指定当前页面出错时,调用handleError.jsp页面处理错误的格式如下: isErrorPage属性isErrorPage属性说明当前页面是否为异常处理页面。如果值为“true”,说明是异常处理页面,能够使用exception对象。如果isErrorPage属性的值为“false”,说明不是异常处理页面。isErrorPage的默认值是false language属性定义JSP页面使用的脚本语言,该属性的值目前只能取java。为language属性指定值的格式: import 属性该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。唯一一个可以重复使用的属性。例如: session 属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。 buffer 属性内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:buffer属性的默认值是8kb 。buffer属性可以取值 none,设置out不使用缓冲区。 autoFlush 属性指定out的缓冲区被填满时,缓冲区是否自动刷新。 isThreadSafe 属性用来设置JSP页面是否可多线程访问。 Info属性属性的值是一个字符串,准备一个常用,可经常修改(类似于符号常量)例9:Example2_9.jsp2.6.2 include 指令标记 如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下: 如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。 静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。 例10:firstExample2_10.jsp;secondExample2_10.jsp;same.jsp2.7 JSP 动作标记 include 动作标记 或 param子标记 include 动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面. param动作标记 param标记以“名字值”对的形式为其它标记提供附加信息。 param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。param动作标记语法格式:当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值 例11:Example2_11.jsp;triangle.jsp forward 动作标记 该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。 或 param子标记 例12:example2_12.jsp Plugin动作标记:保证客户浏览器能够执行Java applet程序例13:Example2_13.jsp useBean 动作标记 该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4章详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。 2.8 JSP 动作标记l 一个JSP页面可有普通的HTML标记、JSP标记、成员变量和方法的声明、Java程序片和Java表达式组成l JSP页面中的成员变量是被所有用户共享的变量。l 如果多个用户访问一个JSP页面,那么该页面中的Java程序片就会被执行多次,分别运行在不用的线程中,即运行在不同的时间片内。Java程序片的局部变量互不干扰。l Page指令用来定义这个JSP页面的一些属性和这些属性的值。l Include指令标记是编译阶段就处理所需要的文件;而include动作标记是在JSP页面运行时才处理文件。第3章 第4章在谈论组件之前让我们看一个通俗的例子组装电视机。组装一台电视机时,人们可以选择多个组件,例如电阻、电容、显像管等,一个组装电视机的人不必关心显像管是怎么研制的,只要根据说明书了解其中的属性和功能就可以了。不同的电视机可以安装相同的显像管,显像管的功能完全相同,一台电视机的显像管发生了故障并不影响其他的电视机。也可能两台电视机安装了一个共享的组件,比如天线,如果天线发生了故障,两台电视机都受到同样的影响。 按着Sun公司的定义,Javabean是一个可以重复使用的软件组件。实际上Javabean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于Javabean是基于Java语言的,因此Javabean不依赖平台,且具有以下特点。(1) 可以实现代码的重复使用。(2) 易编写、易维护、易使用。(3) 可以在任何安装了Java运行环境的平台上使用,而不需要重新编译。 我们已经知道,一个基本的JSP页面有普通的HTML标记和Java程序片组成,如果程序片和HTML大量掺杂在一起,就显得页面混杂,不易维护。JSP页面应当将数据的处理过程指派给一个或多个bean来完成,只需在JSP页面中调用该bean即可。不提倡大量的数据处理都用Java程序片来完成。JSP页面调用bean,可以有效地分离静态工作部分和动态工作部分(如图4.1所示)。 在本章中,我们在Webapps目录下新建一个Web服务目录ch4,因此,除非特别的约定,本章例子中涉及的JSP页面均保存在ch4中。4.1 编写Javabean和使用Javabean4.1.1 编写Javabean Javabean分为可视组件和非可视组件。在JSP中主要使用非可视组件。对于非可视组件,不必去设计它的外观,主要关心它的属性和方法。 编写Javabean就是编写一个Java的类,所以只要会写类就能编写一个Javabean,这个类创建的一个对象称为一个Javabean,简称bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需要在类的方法命名上遵守以下规则: (1)如果类的成员变量的名字是xxx,那么为了获取或者更改成员变量的值,即获取或更改属性,类中必须提供两个方法:getXxx(),用来获取属性xxx.。setXxx(),用来修改属性xxx.。也就是方法的名字用get或set为前缀,后缀是将成员变量名字的首字母大写的字符序列。(2)对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用is代替上面的get和set。(3)类中声明的方法的访问属性都必须是public的。(4)类中声明的构造方法必须是public、无参数的。下面我们编写一个创建简单bean的Java类,并说明在JSP中怎样使用这个类创建一个bean。如果使用Tomcat5.x服务器,创建bean的类必须带有包名。使用package语句给类起一个包名,包名可以是一个合法的标示符,也可以是若干个标示符加“.”分割而成,如:Package gping;Package tom.jiafei; 以下是用来创建bean的Java源文件。 Circle.javapackage tom.jiafeiimport java.io.*;public class Circle int radius; public Circle() radius=1; public int getRadius() return radius; public void setRadius(int newRadius) radius=newRadius; public double circleArea() return Math.PI*radius*radius; public double circlLength() return 2.0*Math.PI*radius; 将上述Java文件保存为Circle.java,并编译通过,得到字节码文件Circle.class。4.1.2保存bean的字节码为了使JSP页面使用bean,Tomcat服务器必须使用相应的字节码创建一个对象,即创建一个bean。为了让Tomcat服务器能找到字节码,字节码文件必须保存在特定的目录中。首先,在当前Web服务目录下建立子目录结构:WEB-INFclass,然后根据类的包名,在class下再建立相应的子目录,比如类的包名为tom.jiafei,那么在class下建立子目录结构:tomjiafei,如图4.2所示。为了让Tomcat服务器启用上述WEB-INFclass目录,必须重新启动Tomcat服务器。如果WEB-INFclass已被启用,只需根据类的包名,在WEB-INFclass下建立相应的子目录即可,不必重新启用Tomcat服务器。WEB-INFclass目录被启用后,就可以创建bean的字节码文件,如此Circle.class,复制到WEB-INFclasstomjiafei中,例如:ch4WEB-INFclassjiafei中。4.1.3创建与使用bean在使用bean的JSP页面中,首先必须有相应的import指令,例如:然后在JSP页面中再使用JSP动作标记useBean,来加载使用bean。uesBean标记的语法格式为:或例如:需要特别注意的是:其中的“创建beansd 类”要带有包名,比如:Class=“tom.jiafei.Circle”当服务器上某个含有useBean动作标记的JSP被加载执行时,JSP引擎将首先根据ID的名字,在一个同步块中,查找JSP引擎内置pageContent对象中是否含有名字ID和作用域scope的对象,如果这个对象存在,JSP引擎就分配一个这样的对象给客户,这样,客户就获得了一个作用域是scope、名字是ID的bean(就像组装电视机时获得了一个有一定功能和使用范围的电子元件)。如果在pageContent中没有查找到指定作用域、名字是ID的对象,就根据class指定的字节码创建一个名字是ID对象,即创建了一个名字是ID的bean,添加到pageContent内置对象中,并指定该bean的作用域是scope,同时JSP引擎分配给客户一个作用域是scope、名字是ID的bean。从JSP引擎创建的bean的过程可以看出,首次创建一个新的bean需要用相应的字节码文件创建对象,当某些JSP页面需要同样的bean时,JSP引擎直接将内置的pageContent中已经有的对象的副本分配给JSP页面,提高了JSP使用bean的效率。提示:如果修改了字节码文件,必须重新启动JSP引擎,才能使用新的字节码文件。下面介绍useBean标签中scope取值的不同情况。l scope取值pageJSP引擎分配给每个JSP页面的bean 是互不相同的,也就是说,尽管每个JSP页面的bean的功能相同,但它们占有不同的内存空间。该bean的有效范围是当前页面,当客户离开这个页面时,JSP引擎取消分配的bean,即释放bean所占有的内存空间。需要注意的是,不同用户的scope取值是page的bean也是互不相同的,也就是说,当两个客户同时访问一个JSP页面时,一个用户对自己bean的属性的改变,不会影响到另外一个用户。l scope取值session此时bean的有效范围是客户的会话期间,也就是说,如果客户在某个Web服务目录多个页面中相互连接,每个页面都含有一个useBean标签,而且各个页面的useBean标签中ID的值相同、scope的值都是session,那么,该客户在这些页面得到的bean是相同的一个(占有相同的内存空间)。如果客户在某个页面更改了这个bean的属性,其他页面的这个bean的属性也将发生同样的变化。当客户的会话(session)消失,比如客户关闭浏览器时,JSP引擎取消分配的bean,即释放bean所占有的内存空间。需要注意的是,不同用户的scope取值是session的bean是互不相同的(占有相同的内存空间),也就是说也就是说,当两个客户同时访问一个JSP页面时,一个用户对自己bean的属性的改变,不会影响到另外一个用户。l Scope取值request此时bean的有效范围是request期间。客户在网站的访问期间可能请求过多个页面,如果这些页面含有scope取值是request的useBean标签,那么在每个页面分配的bean也是互不相同的。JSP引擎对请求响应之后,取消分配给JSP页面的这个bean。需要注意的是,不同用户的scope取值是request的bean是互不相同的,也就是说也就是说,当两个客户同时访问一个JSP页面时,一个用户对自己bean的属性的改变,不会影响到另外一个用户。l Scope取值applicationJSP引擎为Web服务目录下所有的JSP页面分配一个共享的bean,不同用户的scope取值是application的bean也都是相同的一个,也就是说,当多个客户同时访问一个JSP页面时,任何一个用户对自己bean的属性的改变,都会影响到其他的用户。提示:当使用作用域是session的bean是,要保证客户端支持Cookie。在下面的例子1中,负责创建bean的类是上述的Circle类,创建的bean的名字是circle,circle的scope取值page。例子1useBean.jsp 圆的半径是:圆的周长是:圆的面积是:在下面的例子2中将bean的scope的值设为session,创建的bean的名字是girl,创建该bean的类文件仍然是上述的Circle.class。在bean1.jsp页面中,girl的半径radius的值是1(见图4.4),然后连接到bean2.jsp页面,显示半径radius的值,然后将girl的半径radius的值更改为400(如图4.5),当再次刷新bean1.jsp时会发现radius的值已经变成400(见图4.6)。例子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户经理日常工作职责计划
- 基于声纹识别的远程教育系统设计与实现
- 快消品企业财务部门工作策略与案例
- 联通移动通信工程师面试要点
- 旅游景区各分部总经理助理的职责与面试要点解析
- 冬季生产安全管理培训
- 护理服务流程中的患者反馈与持续改进
- 2025年大件选品物流方案 家具家电配送安装服务展示
- 基于人工智能的智能电网技术研究与应用
- 基于深度学习的道路交通标志识别技术研究
- (省统测)贵州省2025年4月高三年级适应性考试(选择性考试科目)生物试卷(含答案)
- DB33T 1337-2023 河湖水库清淤技术规程
- 《氢科学技术应用》课件-3-1 氢气的储存
- 大模型原理与技术-课件 chap11 大模型评测
- (正式版)JB∕T 14736-2024 钢质汽车转向节锻件余热淬火工艺规范
- 2022年版 义务教育《数学》课程标准
- 成人住院患者静脉血栓栓塞症Caprini、Padua风险评估量表
- 《电工电子技术》课件-数字式万用表的使用
- 颌面部骨折围手术期的护理
- 清明时节 奠说巴人获奖科研报告
- 主蒸汽管道更换施工方案
评论
0/150
提交评论