您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第6章 JSP与JavaBeans
1教学活动首页基本内容第6章JSP与JavaBeans教学目的与要求:通过本章的学习让学生了解JavaBean的概念;理解如何编写JavaBean和使用JavaBean;掌握JavaBean的存放目录,获取和修改beans的属性,beans的辅助类,带包名的beans;并能够JSP与JavaBeans结合完成简单应用。教学内容:6.1编写和使用JavaBeans6.2beans的存放目录6.3获取和修改beans的属性6.4beans的辅助类6.5带包名的beans6.6JSP与beans结合的简单例子教学基本要求:了解:JavaBean的概念理解:编写JavaBean,使用JavaBean掌握:JavaBean的存放目录,获取和修改beans的属性,beans的辅助类,带包名的beans应用:JSP与JavaBeans的结合教学重点教学难点:JavaBean的存放目录,获取和修改beans的属性,beans的辅助类,带包名的beans,JSP与JavaBeans的结合教学方法:教学手段:多媒体教学和计算机程序演示教学小结:(见教学进程)作业与思考:见课后习题课后记载:2教学进程第6章JSP与JavaBeans在谈论组件之前让我们看一个通俗的事情:组装电视机。组装一台电视机时,人们可以选择多个组件,例如电阻、电容、显象管等,一个组装电视机的人不必关心显象管是怎么研制的,只要根据说明书了解其中的属性和功能就可以了。不同的电视机可以安装相同的显象管,显象管的功能完全相同,但他们是在不同的电视机里面,一台电视机的显象管发生了故障并不影响其它的电视机;也可能两台电视安装了一个共享的组件:天线,如果天线发生了故障,两台电视机都受到同样的影响。“可视化组件编程”非常成功的一个例子就是微软公司的VB。人们在使用VB编写程序时,经常把一个按钮组件或文本框组件拖放到你的应用程序窗体中,并了解这个按钮的名字、它有哪些功能、方法等,而且你还可以重新更改它的名字,当你创建生成应用程序时,这个按钮的名字被保存了下来。但是,微软的组件只适用于微软的操作平台上,不能为其它的平台所使用。按着Sun公司的定义,JavaBeans是一个可重复使用的软件组件。实际上JavaBeans是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称beans。由于javabeans是基于java语言的,因此javabeans不依赖平台,具有以下特点:1.可以实现代码的重复利用2.易编写、易维护、易使用3.可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。我们已经知道,一个基本的JSP页面就是由普通的HTML标签和java程序片组成,如果程序片和HTML大量交互在一起,就显得页面混杂,不易维护。JSP页面应当将数据的处理过程指派给一个或几个beans来完成,我们只需在JSP页面中调用这个beans即可。不提倡大量的数据处理都用java程序片来完成。在JSP页面中调用beans,可有效的分离的静态工作部分和动态工作部分。6.1编写javabeans和使用javabeans6.1.1编写beansJavabeans分为可视组件和非可视组件。在JSP中主要使用非可视组件。对于非可视组件,我们不必去设计它的外观,主要关心它的属性和方法。编写javabeans就是编写一个java的类,所以你只要会写类就能编写一个beans,这个类创建的一个对象称做一个beans。为了能让使用这个beans的应用程序构建工具(比如JSP引擎)知道这个beans的属性和方法,只需在类的方法命名上遵守以下规则:1.如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中就需要有两个方法:getXxx():用来获取属性xxx。setXxx():用来修改属性xxx。2.对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用“is”代替上面的“get”和“set”。3.类中的普通方法不适合上面的命名规则,但这个方法必须是public的。34.类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。下面我们编写一个简单的beans,并说明在JSP中怎样使用这个beans。Circle.java:importjava.io.*;publicclassCircle{intradius;publicCircle(){radius=1;}publicintgetRadius(){returnradius;}publicvoidsetRadius(intnewRadius){radius=newRadius;}publicdoublecircleArea(){returnMath.PI*radius*radius;}publicdoublecirclLength(){return2.0*Math.PI*radius;}}将上述java文件保存为Circle.java,并编译通过,得到字节码文件Circle.class。6.1.2使用beans为了在JSP页面中使用benas,我们必须使用JSP动作标签:useBeanuseBean格式:jsp:useBeanid=“给bean起的名字”class=“创建beans的类”scope=“bean有效范围”/jsp:useBean或jsp:useBeanid=“给bean起的名字”class=“创建beans的类”scope=“bean有效范围”/当服务器上某个含有useBean动作标签的JSP页面被加载执行时,JSP引擎将首先根据id的名字,在一个同步块中,查找JSP引擎内置pageContent对象中是否含有名字id和作用4域scope的对象,如果这个对象存在,JSP引擎就分配一个这样的对象给客户,这样,客户就获得了一个作用域是scope、名字是id的beans(就像我们组装电视机时获得了一个有一定功能和使用范围的电子元件)。如果在pageContent中没有查找到指定作用域、名字是id的对象,就根据class指定的类创建一个名字是id对象,即创建了一个名字是id的beans,并添加到pageContent内置对象中,并指定该beans的作用域是scope,同时JSP引擎分配给客户一个作用域是scope、名字是id的beans。下面就useBean标签中scope取值的不同情况阐述如下:scope取值pageJSP引擎分配给每个客户的beans是互不相同的,也就是说,尽管每个客户的beans的功能相同,但它们占有不同的内存空间。该beans的有效范围是当前页面,当客户离开这个页面时,JSP引擎取消分配给该客户的beans。scope取值sessionJSP引擎分配给每个客户的beans是互不相同的,该beans的有效范围是客户的会话期间,也就是说,如果客户在多个页面中相互连接,每个页面都含有一个useBeans标签,这些useBean标签中id的值相同,并且scope的值都是session,那么,该客户在这些页面得到的beans是相同的一个。如果客户在某个页面更改了这个beans的属性,其它页面的这个beans的属性也将发生同样的变化。当客户关闭浏览器时,JSP引擎取消分配给客户的beans。scope取值requestJSP引擎分配给每个客户的beans是互不相同的,该beans的有效范围是request期间。客户在网站的访问期间可能请求过多个页面,如果这些页面含有socope取值是request的useBeans标签,那么pageCotent对象在每个页面分配给客户的beans也是互不相同的。JSP引擎对请求作出响应之后,取消分配给客户的这个beans。scope取值applicationJSP引擎为每个客户分配一个共享的beans,也就是说,所有客户共享这个beans,如果一个客户改变这个beans的某个属性的值,那么所有客户的这个beans的属性值都发生了变化。这个beans直到服务器关闭才被取消。注:当使用作用域是session的beans时,要保证客户端支持Cooker.为了使服务器的所有web服务目录下的JSP页面文件都能使用我们的beans,我们必须将上面编译通过生成的字节码类文件:Circle.class拷贝到JSP引擎的classes文件夹下,即D:tomcat\Jakarta-tomcat-4.0\classes下,如图6.1所示。另外,在使用beans的JSP页面中,必须有如下的import指令:@pageimport=“Circle”5在下面的例子1中,负责创建beans的类是上述的Circle类,创建的beans的名字是girl,girl的scope取值page。例子1(效果如图6.2所示)useBeans.jsp:%@pagecontentType=text/html;charset=GB2312%%@pageimport=Circle%HTMLBODYbgcolor=cyanFontsize=1jsp:useBeanid=girlclass=Circlescope=page/jsp:useBean%--通过上述JSP标签,客户获得了一个作用域是page,名字是girl的beans--%%//设置圆的半径:girl.setRadius(100);%P圆的半径是:%=girl.getRadius()%P圆的周长是:%=girl.circlLength()%P圆的面积是:%=girl.circleArea()%/BODY/HTML图6.1在JSP引擎放置beans的目录图6.2使用beans的JSP页面6在下面的例子2中我们将beans的scope的值设为session创建的beans的名字是girl,创建该beans的类文件仍然是上述的Circle.class。在beans1.jsp页面中,girl的半径radius的值是1(图6.3),然后连接到beans2.jsp页面,显示半径radius的值,然后将girl的半径radius的值更改为400(图6.4),当再刷新beans1.jsp时会发现radius的值已经变成了400(图6.5)。例子2(效果如图6.3、6.4、6.5所示)beans1.jsp:%@pagecontentType=text/html;charset=GB2312%%@pageimport=Circle%HTMLBODYbgcolor=cyanFontsize=1jsp:useBeanid=girlclass=Circlescope=session/jsp:useBeanP圆的半径是:%=girl.getRadius()%Ahref=beans2.jspBRbeans2.jsp/A/BODY/HTML图6.3beans1.jsp效果图6.4beans2.jsp效果图6.5刷新beans1.jsp后效果7beans2.jsp:%@pagecontentType=text/html;charset=GB2312%%@pageimport=Circle%HTMLBODYbgcolor=cyanFontsize=1jsp:useBeanid=girlclass=Circlescope=session/jsp:useBeanP圆的半径是:%=girl.getRadius()%%girl.setRadius(400);%P修改后的圆的半径是:%=girl.getRadius()%/BODY/HTML在下面的例子3中,将beans的scope的值设为application。当第一个客户访问这个页面时,显示beans的属性radius的值,然后把这个属性的值修改为1000(图6.6)。当其它客户访问这个网页时,看到的这个属性的
本文标题:第6章 JSP与JavaBeans
链接地址:https://www.777doc.com/doc-4420018 .html