JavaBean在JSP中的应用.ppt
第7章 JavaBean在JSP中的应用,7.1 JavaBean简介 7.2 JavaBean的范围 7.3 JSP访问JavaBean的语法 7.4 在JSP中使用JavaBean 7.5小结 7.6习题,7.1 JavaBean简介,什么是JavaBean 编写JavaBean 编译JavaBean,什么是JavaBean,JavaBean 是一种Java语言写成的可重用组件。为成为JavaBean,类必须是具体的和公共的,并且具有无参数的构造函数。,什么是JavaBean,一个Web应用系统包括数据层、业务逻辑层和表示层。一个基本的JSP页面包含了HTML标记和Java程序段,将表示层和业务逻辑层混杂在一起,使得页面显得混乱,不好维护。应用JavaBean可以将表示层和业务逻辑层分开,把业务处理过程交给JavaBean完成,再由JSP页面去调用JavaBean。JavaBean降低了JSP程序的复杂度,同时也增加了软件的可重用性。,编写JavaBean,编写JavaBean实际上就是编写一个Java类,因此可以使用任何一个文本编辑器来编写,如记事本。设计JavaBean类就是要设计这个JavaBean的属性和方法,JavaBean方法的命名规则:,(1)如果成员变量的名字为Xx,则相应地有两个用来得到成员变量值和设置变量值的方法,它们分别命名为getXx()和setXx()。即如下的两种形式:public dataType getXx()public void setXx(dataType data)其中,dataType是成员变量的数据类型,参数data是赋予成员变量的值。注意,方法名getXx和setXx中变量名第一个字母大写。,编写JavaBean,(2)如果成员变量是boolean类数据,则有三个方法和该成员变量对应,分别是:public boolean isXx()public boolean getXx()public void setXx(boolean data)前两个可用来得到成员变量的值,第三个用于设置成员变量的值。(3)访问成员变量的方法都设为public,即公有方法;如果有构造函数,则必须有一个public类型且没有参数的构造函数。,编写JavaBean,【例7.1】JavaBean的编写。此处以第四章的图书征订Bean为例。BookBean.java源代码如下:package bean;import java.io.*;public class BookBean private String BookName=;private int BookNum=1;public BookBean()public void setBookName(String BookName)this.BookName=BookName;,编写JavaBean,public String getBookName()return this.BookName;public void setBookNum(int BookNum)this.BookNum=BookNum;public int getBookNum()return this.BookNum;需要注意的是,文件名必须要和类的名字相同,否则编译时会出错。,编译JavaBean,JavaBean必须经过编译成class字节码文件才能供JSP文件调用。在许多的集成开发环境中,能够自动完成编译工作,如在Eclipse集成开发环境中编译JavaBean类的方法很简单,只需要保存源文件,就会自动编译,7.2 JavaBean的范围,JavaBean存在四种作用范围,或者叫生命周期:页面范围请求范围会话范围应用范围具体取值是通过scope属性来指定的。,页面范围,page范围的JavaBean只在当前页面有效常用于进行一次性操作的JavaBean,这样的Bean用的最多,比如:大部分表单提交bean的一些计算处理,请求范围,此JavaBean对象保存在request对象中有request范围的JavaBean实例可以在处理请求的所有JSP页面中都存在,这个对象只有在请求全部处理完毕后才会被释放掉。比如判断用户登录功能,如果用户输入的用户名和密码合法就可以用forward动作转到一个合法输入的处理页面,否则就转到一个出错的处理页面,这时,所转到的页面仍然可以得到用户的输入。,会话范围,是保存在session里的,它的生存周期是整个session,只有当session过期后才能释放掉。通常用于共享同一session的JSP页面,比如购物车登录后的用户信息,应用范围,是保存在application对象里的,它的生存周期是整个application。只有当Web Server关闭才会消失。通常用于共享同一application的JSP程序中,比如:程序中一些经常用到的数据库连接URL全局计数器聊天室中的人员统计,7.3 JSP访问JavaBean的语法,在JSP页面中要使用JavaBean,应首先在文件头部导入这个JavaBean对应的类,如:或,7.3 JSP使用JavaBean的四个步骤,1 编写JavaBean类(成员、构造函数、get方法(is方法)、set方法)2 JSP页面使用page指令中的import导入Bean3 动作定义一个Bean实例4 和设置和访问Bean属性,7.4 在JSP中使用JavaBean,【例7.2】JavaBean的使用及其作用范围。用Java编写的Box类可以设置立方体的长、宽、高求立方体的表面积和体积在JSP页面中使用JavaBean,并显示不同scope属性值JavaBean的使用范围。page作用域session作用域application作用域,7.4 在JSP中使用JavaBean,本例在Tomcat的发布目录webapps下建立了一个文件夹JavaBeans,使用beans的所有JSP页面文件存放在Tomcat5.5webappsJavaBean目录下用Java编写的立方体类Box.java编译生成的字节码文件Box.class存放路径为Tomcat5.5webappsJavaBeansWEB-INFclassesbean目录下。,Box.java源代码,package bean;import java.io.*;public class Box int length,width,height;public Box()length=1;width=1;height=1;public void setlength(int newlength)length=newlength;,7.4 在JSP中使用JavaBean,public void setwidth(int newwidth)width=newwidth;public void setheight(int newheight)height=newheight;public int getlength()return length;public int getwidth()return width;public int getheight(),7.4 在JSP中使用JavaBean,return height;public int BoxVolume()int volume;volume=length*width*height;return volume;public int BoxArea()int area;area=2*(length*width+width*height+length*height);return area;,7.4 在JSP中使用JavaBean,(1)scope=”page”,JavaBean的有效范围是当前页 在boxBean_page.jsp页面中,获得一个id为Mybox,作用域是page的JavaBean,该JavaBean的生命期 为当前页。boxBean_page.jsp代码清单如下:,Box 的长是:Box 的宽是:Box 的高是:,Box 的体积是:Box 的表面积是:在浏览器中显示效果如图7.2所示。图7.2 作用域为page的JavaBean页面,7.4 在JSP中使用JavaBean,(2)scope=”session”,用户在不同页面共享JavaBean 用户在boxBean_session1.jsp和boxBean_session2.jsp页面间共享一个立方体JavaBean,如果用户在一个页面中更新了立方体的数据,那么刷新另一个页面,则可见到更新后的数据。boxBean_session1.jsp代码清单如下:,Box 的长是:Box 的宽是:Box 的高是:Box 的体积是:Box 的表面积是:boxBean_session2.jsp,boxBean_session2.jsp代码清单如下:Box 的长是:Box 的宽是:Box 的高是:Box 的体积是:,Box 的表面积是:修改后Box 的长是:修改后Box 的宽是:,修改后Box 的高是:修改后Box 的体积是:修改后Box 的表面积是:boxBean_session1.jsp,boxBean_session1.jsp在浏览器中的执行结果如图7.3所示。单击超链接跳转到boxBean_session2.jsp,显示立方体的初始数据并将其数值更新,显示效果如图7.4所示。单击超链接返回页面boxBean_session1.jsp,会发现立方体的数据已经修改,说明用户在两个页面间共享了一个JavaBean。图7.3 页面1运行结果 图7.4页面2运行结果 图7.5 再次运行页面1,(3)scope=”application”,不同用户共享JavaBean在boxBean_app.jsp文件中创建了一个id为MyBox的JavaBean,作用域为application,该JavaBean由所有用户共享,直到服务器关闭。boxBean_app.jsp代码如下:,Box 的长是:修改后Box 的长是:Box 的宽是:修改后Box 的宽是:,Box 的高是:修改后Box 的高是:修改后Box 的体积是:修改后Box 的表面积是:,第一个用户运行boxBean_app.jsp显示立方体的数据,然后更新数据并显示,结果如图7.6所示。后续用户运行此文件时将显示更新后的数据,如图7.7所示 图7.6 第一个用户访问boxBean_app.jsp 图7.7 后续用户访问boxBean_app.jsp,作业:读者选购图书示例,bookSelect.html到ftp上下载,完成BookBean.java和bookReceive.jsp的编写。,7.5小结,本章介绍了JavaBean的基本概念,JavaBean的编写,编译及其作用范围以及在JSP中如何使用JavaBean。,