您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > JSP纸制教案(8)
第八章JSP使用BeanBean是一种软件组件。在JSP页面中常用Bean来封装事务逻辑(功能实现部分)、数据库操作等,这样,可以实现前台展示、业务逻辑、数据库操作三者的分离,使程序变得清晰,使系统变得健壮和灵活。本章介绍Bean的编写和使用方法。8.1什么是bean?bean本身是遵循一定规范的java类,是一个可以重复使用的组件。在实际应用中,我们常编写一个组件来实现某种通用的功能。下面是bean类遵循的规范和bean组件的外部特征:1.bean作为类必须遵循的规范⑴.bean必须是public类⑵.bean必须有一个公有的无参构造方法⑶.bean必须实现接口Serializable或Externalizable。以确保组件的持续性。2.bean作为组件的外部特征⑴.独立性⑵.可重用性⑶.能在可视化环境中使用⑷.状态可以保存8.1编写beanbean分为可视组件和非可视组件。在JSP中,主要使用非可视组件。对于非可视组件,我们不必关心它的外观,只关心它的属性和方法。为了让JSP引擎知道bean的属性和方法,bean的方法命名必须遵守以下规则:1.假设bean类的成员变量名是xxx,则访问该变量的两个方法命名为:get(),用此方法获取xxx的值setXxx(),用此方法设置xxx的值2.若成员变量xxx是布尔类型,则,只有一个访问方法,其命名是isXxx().8.2.1编写圆bean[例子8.1]编写一个圆bean,计算圆的面积和周长。问题分析:这里部署圆bean的三个步骤:1.给bean起一个包名small.dog。由于Tomcat5.0服务器要求bean字节码必须放在一个包中。我们在编写Circle.java时,使用package语句给bean起的包名是small.dog。2.创建包small.dog。在某目录下创建子目录small\dog,把编译后的字节码文件Circle.class复制到small\dog目录下,这就完成了small.dog包的创建。3.把包small.dog复制到存放bean的公有目录中。Tomcat5.0服务器存放bean字节码的公有目录是\Tomcat5.0\common\classes,我们将small\dog目录复制到\Tomcat5.0\common\classes目录下,就完成了包small.dog包的复制。程序结构:由Circle.java类实现bean功能;useBean.jsp页面调用圆bean。程序算法:Circle.java:1.声明三个变量,表示圆的半径/面积/周长:2.radius/circleArea/circleLength3.定义三个方法,分别获取圆的半径/面积/周长的值useBean.jsp:1.导入包small.dog2.以类small.dog.Circle创建一个对象,对象名是:girl3.设置对象girl的半径为1004.输出对象girl的半径,周长,面积的值。8.2.2编写三角形bean[例子8.2]编写一个三角形bean,该bean能判断三条边能否构成一个三角形,还能计算三角形的面积。问题分析:这里部署三角形bean的步骤:1.给bean起一个包名small.dog。编写Triangle.java时,使用package语句给bean起的包名是small.dog。2.把编译后的字节码文件Triangle.class复制到存放bean的公有目录\Tomcat5.0\common\classes\small\dog目录下。这也意味着,Triangle.class字节码保存在“small.dog”包中。程序结构:由Triangle.java类实现bean功能;Triangle.jsp页面调用bean。程序算法:Triangle.java:1.声明5个变量,保存bean的5种属性:sideA,sideB,sideC,area,triangle。2.定义方法getArea(),计算三角形面积。3.定义方法booleanisTriangle(),判断给出的三条边能否构成一个三角形。Triangle.jsp:1.导入包small.dog2.创建一个表单,该表单包含三个文本框(接受客户输入三条边的长度)3.以类small.dog.Triangle创建一个对象,对象名是triangle。4.给对象triangle的属性(sideA,sideB,sideC)赋值。5.将对象triangle的属性值输出。8.3Jsp使用bean在JSP页面中,要正确使用bean,必须遵守以下三个步骤:第一,正确存放bean字节码;第二,在JSP页面中导入要使用的bean类;第三,在JSP页面中使用动作标签useBean创建一个bean。完成以上三个步骤后,才能使用该bean。1.将bean字节码存放在正确的目录中bean字节码文件有两种部署方法,一种是将bean字节码文件部署在web服务器的公有目录中;一种是将bean字节码文件部署在web服务器的私有目录中。选择哪一中部署方式,根据实际情况而定。(1)将bean字节码文件存放在公有目录中存放在公有目录中的bean字节码文件,任何WEB服务目录下的JSP页面都能访问此bean。本书中安装的Tomcat5.0服务器的公有目录是:E:\Tomcat5.0\common\classes。将前面的圆bean字节码文件就是存放在公有目录中。将圆bean字节码文件存放在公有目录的方法:定义圆bean类时,规定了该bean类所属的包是small.dog。这样,在E:\Tomcat5.0\common\classes目录下,创建一个子目录:small\dog,将圆类(Circle.class)字节码文件存放在E:\Tomcat5.0\common\classes\small\dog目录下。(2)将bean字节码文件存放在私有目录中存放在私有目录中的bean字节码文件,只有该私有目录下的JSP页面能访问此bean,其它目录下的JSP页面就不能访问此bean。例如,将前面的圆bean字节码文件存放在私有目录e:\test\8下的方法如下:在e:\test\8目录下创建子目录WEB-INF\classes,由于圆bean所属的包名是small.dog,因此,在e:\test\8\WEB-INF\classes目录下创建一个子目录small\dog,最后,将圆bean(Circle.class)字节码文件保存在e:\test\8\WEB-INF\classes\small\dog目录下。在该目录下的bean,只有e:\test\8目录下的JSP页面才能访问。2.在JSP页面中使用import属性导入bean如果要在JSP页面中访问某个bean,则必须在JSP页面中导入相应的bean类。如,访问圆bean,则在JSP页面中使用下面的语句导入圆bean字节码:%@pageimport=”small.dog.Circle”%3.在JSP页面中使用动作标签useBean获得一个bean对象使用动作标签useBean创建一个bean,供JSP页面访问。以圆bean为例,创建一个变量名为boy,有效范围是session的bean。语句格式如下:jsp:useBeanid=”boy”class=”small.dog.Circle”scope=”session”/jsp:useBean下面解释useBean标签的语法格式、执行原理和bean的作用域(1)UseBean标签的语法格式:jsp:useBeanid=”给bean起一个变量名”class=”创建bean的类名”scope=”bean的有效范围”/jsp:useBean或jsp:useBeanid=”给bean起一个变量名”class=”创建bean的类名”scope=”bean的有效范围”/(2)useBean标签的执行原理当JSP页面的useBean标签执行时,在一个同步块中,JSP引擎首先根据id的名字值和scope值,在pageContent对象中查找是否含有变量名是id值,作用域是scope值的对象。如果存在这样一个对象,JSP引擎就分配这样一个对象给客户,如果没有找到名字是id值,作用域是scope值的对象,就根据class属性值(类名),创建一个名字是id值,作用域是scope值的bean,并把该bean添加到pageContent内置对象中,同时,JSP引擎将此对象分配给客户。下面是useBean语句执行流程,如图8-1(略)⑶.useBean标签中bean的作用域JSP引擎给不同的客户分配不同的bean,也许多个客户拥有相同功能的bean,但是每个客户的bean是独立的,在内存占有不同的空间。用useBean标签创建的bean的作用域由scope属性的取值决定的。scope有四种取值,它们是request/page/session/application。下面就useBean标签中scope的不同取值阐述如下:scope取值为request对于同一客户,每次不同的请求,JSP引擎分配给客户的bean也不同。JSP引擎对请求作出响应之后,取消分配给客户的这个bean。bean的生命周期在客户请求开始到对请求作出响应这段时间。scope取值为page:对于同一客户,访问不同页面,JSP引擎分配给客户的bean也不同。客户进入页面时JSP引擎给客户分配一个bean,客户离开该页面时,JSP引擎取消分配给客户的bean。bean的生命周期是客户进入页面到客户离开这个页面这段时间。scope取值为session:对于同一客户,访问不同web目录下的页面,JSP引擎分配给客户的bean也不同。客户访问某个web目录时JSP引擎给客户分配一个bean,客户离开该web目录时JSP引擎取消分配给客户的bean。bean的生命周期是客户访问web目录到客户离开这个web目录这段时间。scope取值为application:JSP引擎为每个客户分配同一个bean,就是说,所有客户共享同一个bean。bean的生命周期是从bean分配给客户到服务器关闭这段时间。8.3.1读文件bean[例子8.3]通过客户选择目录和文件,列出目录下的文件名和输出文件内容。问题分析:创建一个读文件的bean,该bean可以列出指定目录下的所有文件名,也可以读出指定文件的内容。程序结构:本程序由三个页面和一个bean组成。filepathselect.jsp页面提供客户选择目录的界面,把客户选择的目录提交给listfilename.jsp页面;listfilename.jsp页面列出该目录下的所有文件名;readfile.jsp页面读出文件的内容;ReadFile.java是一个bean,该bean的功能是列出指定目录下的文件名和读出文件的内容。三个页面和bean的交互关系如图8-2所示。程序算法:filepathselect.jsp:创建一个表单,该表单包含一个列表框,客户在该列表框选择目录。listfilename.jsp:1.导入small.dog包2.以ReadFile类创建一个bean,bean的名字是file3.给bean的成员变量(filePath)赋值(客户提交的目录),其值是filepathselect.jsp页面中,下拉框的值(filePath)4.输出bean的成员变量filePath的值(目录)5.输出bean的成员变量listFile的值(列出目录下所有的文件名)6.创建一个表单,该表单包含一个文本框,用于客户输入文件名,提交该表单时,重定向到readfile.jsp页面。7.创建一个表单,该表单实现页面重定向功能,当提交该表单时,页面重定向到页面filepathselect.jsp。readfile.jsp:listfilename.jsp页面readfile.jsp页面filepathselect.jsp页面提交文件提交目录ReadFile.java组件重新选文件
本文标题:JSP纸制教案(8)
链接地址:https://www.777doc.com/doc-3235365 .html