第5章使用JavaBean_第1页
第5章使用JavaBean_第2页
第5章使用JavaBean_第3页
第5章使用JavaBean_第4页
第5章使用JavaBean_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章使用JavaBean,第5章 使用JavaBean,第5章使用JavaBean,学习目的与要求:,使用JavaBean可以使页面显示和业务逻辑处理有效的分离,并使Bean成为有效重复利用的组件,进一步实现代码重用,方便应用系统维护。 理解JavaBean的概念和特点,掌握编写、编译、调试、布置Bean的方法; 掌握表单与Bean的交互方法;程序片中使用JavaBean的方法; 掌握计数器、购物车Bean的编写技术。,第5章使用JavaBean,本章主要内容,5.1 JavaBean的基本概念 5.2 创建与使用JavaBean 5.3 JavaBean的辅助类 5.4 jsp与JavaB

2、ean模式实例 5.5 上机实训 5.6 本 章 习 题,第5章使用JavaBean,5.1 JavaBean的基本概念,JSP+JavaBean是JSP开发的一种典型模式,Sun的JavaBean技术为JSP开发提供了极大的方便,使得页面与数据处理实现了真正地分离 5.1.1 什么是JavaBean JavaBean是Java程序设计中的一种组件技术。Sun公司把JavaBean定义为一个可重复使用的软件组件,类似于电脑CPU、硬盘等组件。从程序员编程的角度看,实际上JavaBean组件就是Java开发中的一个类,通过封装属性和方法成为具有某种功能和接口的类,简称Bean。,第5章使用Jav

3、aBean,5.1 JavaBean的基本概念,5.1.2 JavaBean规范 JavaBean分为可视化组件和非可视化组件。 非可视化的JavaBean越来越显示出优势,被广泛地使用在JSP编程中。非可视化的JavaBean的一些规定: 1. JavaBean的构造方法 JavaBean就是符合一定条件的Java类,该类必须声明为public类,可供其他类实例化。类中如果有构造方法,必须声明为public类型且无参数。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean规范 2. JavaBean的属性与方法 JavaBean的属性必须声明为pri

4、vate,方法必须声明为public访问类型。 JavaBean中用一组set方法设置Bean的私有属性值,get方法获得Bean的私有属性值。set和get方法名称与属性名称之间必须对应,也就是:如果属性名称为xxx,那么set和get方法的名称必须为setXxx()和getXxx(),set和get为前缀与属性名字首字母大写组成set和get方法名称。对于boolean类型的属性,允许使用is代替方法名称中的set和get前缀。 创建Bean必须带有包名。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean规范 例如,myBeanOne定义格式如下

5、: package mybean; import java.io.*; public class myBeanOne String name; boolean flag; public myBeanOne() name=; flag=true; ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean规范 public setName(String s) name=s; public String getName() return name; public setFlag(boolean flag) this.flag=flag; public boole

6、an getFlag() return flag; ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 5.2.1 创建JavaBean(演示创建、编译Bean) 创建JavaBean要经过编写代码、编译源文件、配置JavaBean这样一个过程,这个过程可以借助Java开发工具,也可以使用记事本等简单文本编辑器编写代码,JDK6.0下编译并在Tomcat6.0环境下测试。 注意:编写Bean可以在该类中先加入main函数,调试通过再将main函数再注释掉,然后再将字节码文件部署到tomcat6.0环境中,就可以直接在JSP中调用了,这样可以有效

7、地降低Bean的调试难度。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 5.2.2 布置JavaBean 要想在JSP中使用JavaBean,JSP引擎必须创建一个JavaBean对象,然后在JSP页面中才能调用这个创建的JavaBean。为了让Tomcat6.0找到JavaBean的字节码,字节码文件必须保存在特定的目录中,这就是JavaBean的布置。 布置JavaBean首先要在当前Web服务目录中建立:WEB-INFclasses子目录,用户要注意目录名称的大小写,然后在根据JavaBean的包名创建对应的子目录,并将JavaBe

8、an的字节码文件复制到包对应的子目录中即可。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 例如MyRectangle的包名为mybean.maths,则创建的目录结构如图所示,然后将MyRectangl.class文件复制到ch5WEB_INFclassesmybeanmaths子目录中。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 5.2.3 在JSP中使用JavaBean 在JSP中提供了、和动作标记来实现对JavaBean的操作,也可以在程序片中操作Bean。使用Bean首先要

9、在JSP页面中使用import指令将Bean引入,例如引入MyRectangle,格式如下: ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 5.2.3 在JSP中使用JavaBean 1. 动作标记 要想在JSP页面中使用Bean,必须首先使用动作标记在页面中定义一个JavaBean的实例,这个被定义实例有一定的生存范围及一个唯一的id,JSP页面通过id来识别Bean,也可以在程序片中通过id.method形式来调用Bean中的set和get方法。下面是useBean动作标记的使用格式: ,第5章使用JavaBean,5.1 JavaB

10、ean的基本概念,5.2 创建与使用JavaBean 5.2.3 在JSP中使用JavaBean 2.动作标记 使用动作标记可以在JSP页面中得到Bean实例的属性值,并将其转换为String类型的字符串,发送到客户端。使用动作标记,必须先声明Bean的实例,并保证Bean中有对应的getXxx()方法。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 创建与使用JavaBean 5.2.3 在JSP中使用JavaBean 下面演示一个实例,第5章使用JavaBean,MyRectangle.java package mybean.maths; import java.

11、io.*; public class MyRectangle double length; double width; double area; public MyRectangle()/无参数构造函数 length=0; width=0; ,第5章使用JavaBean,public void setLength(double length) /设置长 this.length=length; public double getLength()/得到长 return length; public void setWidth(double width)/设置宽 this.width=width;

12、public double getWidth()/得到宽 return width; public double getArea()/求矩形面积 double faceArea=length*width; return faceArea; ,第5章使用JavaBean,ch5_1.jsp 例5.1一个bean的示例 ,第5章使用JavaBean, getProperty动作输出矩形的面积是: 表达式输出矩形的面积是: ,第5章使用JavaBean,5.2 创建与使用JavaBean,5.2.3 在JSP中使用JavaBean 3.动作标记 使用动作标记可以在JSP页面中设置Bean的属性,但必

13、须保证Bean有对应的setXxx方法。setProperty动作标记设置Bean的属性有2种方式。 (1) 第一种,使用表达式或字符串为Bean的属性赋值。 使用格式如下: / 表达式的数据类型必须和bean的属性类型相一致,第5章使用JavaBean,5.2 创建与使用JavaBean,5.2.3 在JSP中使用JavaBean (1) 第一种,使用表达式或字符串为Bean的属性赋值。 使用字符串为bean的属性赋值,格式如下: value=字符串赋值方式,这个字符串会自动被转化为属性的数据类型。自动转化会调用Java语言的数据类型的方法,例如Integer.parseInt(String

14、 s)、Long.parseLong(String s)等。这些方法都可能发生NumberFormatException异常,例如调用Integer.parseInt(123a)方法时会发生异常。,第5章使用JavaBean,【例5.2】setPropery动作指令使用的表达式赋值示例。页面效果如图所示。,第5章使用JavaBean,Student.java,源文件内容如下: package mybean.maths; import java.io.*; public class Student String name=null; long number; String sex=null; d

15、ouble height,weight; public Student() name=yang“;number=123; sex=k“;height=170;weight=80; public String getName()return name; public void setName(String s)name=s; public long getNumber()return number;,第5章使用JavaBean,public void setNumber(long num)number=num; public String getSex()return sex; public v

16、oid setSex(String s)sex=s; public double getHeight()return height; public void setHeight(double height)this.height=height; public double getWeight()return weight; public void setWeight(double weight) this.weight=weight; ,第5章使用JavaBean,ch5_2.jsp 例5.2 setProperty动作指令示例 ,第5章使用JavaBean,/ / getProperty动作

17、指令输出学生信息: 学生姓名: 学生学号: 学生性别: 学生身高: 学生体重: ,第5章使用JavaBean,5.2 创建与使用JavaBean,5.2.3 在JSP中使用JavaBean (2)第二种,使用表单的参数值为Bean的属性赋值。 在Web程序设计中,客户端通常是使用表单与应用程序交互的,HTML表单中提交的信息存放在request对象中,并且以名称-值对的形式进行传递。使用setProperty动作标记,可以实现HTML表单元素与JavaBean属性的映射,从而实现Bean属性与表单输入参数之间的交互。使用这种方法为Bean的属性赋值格式如下: 或: ,第5章使用JavaBean

18、,使用表单参数值为bean属性赋值,第5章使用JavaBean,LoginBean.java package mybean.maths;import java.io.*; public class LoginBean private String loginName=null; private String password=null; public void LoginBean() public void setLoginName(String s)loginName=s; public String getLoginName()return loginName; public void s

19、etPassword(String s)password=s; public String getPassword()return password; public boolean check() if(yang.equals(loginName) ,第5章使用JavaBean,ch5_3.jsp 例5.3 与表单参数值进行交互 输入用户名称: 输入用户密码: 确认用户信息: ,第5章使用JavaBean,ch5_3_show.jsp 例5.3 bean与表单参数交互示例 欢迎 进入考生报名系统。 登录失败,单击 这里重新登录 您登录的信息是:用户名称: 用户密码: ,第5章使用JavaBea

20、n,5.3 JavaBean的辅助类,一、什么是JavaBean的辅助类? 编写Bean除了要使用import语句引入Java的标准类,可能还需要自己编写的其他类。用户自己编写的被Bean引用的类称之为Bean的辅助类。 二、如何使用JavaBean的辅助类? 此时用户即可以将这些类和创建Bean的类编写在一个Java源文件中,也可以单独编写然后引入。不管采用那种形式,都要将源文件编译后产生的全部字节码文件复制到Web服务目录classes的相应的目录中。,第5章使用JavaBean,5.4 jsp与JavaBean模式实例,5.4.2 购物车Bean 在电子商务网站中,用户选择商品首先要放入

21、购物车中,对于购物车中的商品,用户可以根据需要进行商品数量的更改、商品的删除等操作,购物车就像一台虚拟的超市购物小推车。电子商务应用程序中的购物车,其本质是一个Scope为session的JavaBean,用于保存用户会话期间选定商品的关键字和数量信息,并提供访问信息的接口,允许用户增加、删除和修改关键字及对应数量。 购物车是电子商务Web应用程序开发的关键技术之一。下面以一个网上书店为例,介绍购物车编程。,第5章使用JavaBean,5.4 jsp与JavaBean模式实例,5.4.2 购物车Bean Hashtable,即散列表,是java.util包中的一个类,用于存储“关键字/值”对,

22、一般使用String对象作为关键字,其他对象作为关键字的关联的值。使用Hashtable类必须先导入java.util包。下面是它的一些常用的方法: (1) Hashtable():声明和构造一个散列表对象,语句如下; Hashtable myGoods=new Hashtable(); (2) put(key,value):把关键字和值对插入散列表中,语句如下: String goods_id=123;,第5章使用JavaBean,5.4 jsp与JavaBean模式实例,5.4.2 购物车Bean (3) containsKey(key):判断关键散列表中是否有某 (4) get(key)

23、:获得关键字相关联的对象,有则返回关键字关联值,否则返回null。关键字, (5) remove(key):删除指定key及key的值,如果删除成功返回被删除关键字关联的值,删除失败返回null。有返回true,否则返回false, (6) keys():返回散列表中关键字的枚举,返回值为Enumeration类型。 (7) size():返回散列表中的项数,返回值是int类型数据。,第5章使用JavaBean,5.4 jsp与JavaBean模式实例,5.4.2 购物车Bean Hashtable使用枚举接口(Enumeration)来遍历元素序列。hasMoreElements()如果还有

24、更多的元素可以查看,则返回true,否则返回false;nextElement()方法返回要查看的下一个元素,如果hasMoreElements()返回false不能调用nextElement()方法。 Hashtable list= Hashtable(); Enumeration enumkeys=list.keys(); while(enumkeys.hasMoreElements() String goods=(String)enumkeys.nextElement(); do something with goods; ,第5章使用JavaBean,主页面,第5章使用JavaBean

25、,购物车页面 增加和删除购物车商品页面,第5章使用JavaBean,Goods.java package mybean.maths; public class Goods String goods_id=null;String goods_name=null; double goods_price; public String getGoods_id() return goods_id; public void setGoods_id(String goods_id) this.goods_id = goods_id; public String getGoods_name() return

26、goods_name; public void setGoods_name(String goods_name) this.goods_name = goods_name; public double getGoods_price() return goods_price; public void setGoods_price(double goods_price) this.goods_price = goods_price; ,第5章使用JavaBean,shoppingCart.java package mybean.maths; import java.util.*; import j

27、ava.io.*; public class shoppingCart implements Serializable Hashtable myGoods=new Hashtable(); public shoppingCart()/构造函数 /只存关键字和数量,其它价格等信息从GoodList中得到,第5章使用JavaBean,public void addGoods(String goods_id,int goods_count ) /商品放入购物车,商品存在则累加,否则新建。 if(myGoods.containsKey(goods_id) int iTemp=(Integer)myGo

28、ods.get(goods_id).intValue(); iTemp=iTemp+goods_count; myGoods.put(goods_id,new Integer(iTemp); else myGoods.put(goods_id, new Integer(goods_count); ,第5章使用JavaBean,public boolean minusGoods(String goods_id,int goods_count) /商品从购物车中拿出 if(myGoods.containsKey(goods_id) /存在该商品,则减数量 int iTemp=(Integer)my

29、Goods.get(goods_id).intValue(); iTemp=iTemp-goods_count; if(iTemp=0) deleteGoods(goods_id); elsemyGoods.put(goods_id, new Integer(iTemp); return true; else/不存在该商品 return false; ,第5章使用JavaBean,public boolean deleteGoods(String goods_id) /删除购物车中的一件商品 if(myGoods.remove(goods_id)=null) return false; els

30、e return true; public Hashtable listMyGoods() /得到购物车中所有的商品 return myGoods; ,第5章使用JavaBean,ch5_6_book.jsp文件主要部分代码: 我要查看购物车 for(Goods me:goodsList) out.print(); out.print( +me.getGoods_id()+); out.print(+me.getGoods_name()+); out.print(+me.getGoods_price()+); out.print(我要购买); out.print(); ,第5章使用JavaBe

31、an,主页面,第5章使用JavaBean,ch5_6_buy.jsp 我要继续购买 goodsList=glApp.getGoodL(); Goods gds=null;/有参数值则显示第一个表格 if(request.getParameter(goods_id)!=null) String goods_id=request.getParameter(goods_id); out.print(); out.print(); out.print(您要买的书是:); out.print(); out.print(序号); out.print(书名); out.print(单价); out.prin

32、t(本数); out.print();,第5章使用JavaBean,gds=searchGood(goodsList,goods_id); out.print(); out.print(+goods_id+); out.print(+gds.getGoods_name()+); out.print(+gds.getGoods_price()+); out.print(); out.print(+); out.print(); out.print(); out.print(); out.print(); ,第5章使用JavaBean,double all_price=0; out.print()

33、; out.print(); out.print(您的购物车中有下列书目:); out.print(); out.print(序号); out.print(书名); out.print(数目); out.print(单价); out.print(总价); out.print(删除); out.print(减少); out.print();,第5章使用JavaBean,/遍历购物车中所有商品的key Hashtable list=spcart.listMyGoods(); Enumeration enumkeys=list.keys(); while(enumkeys.hasMoreElements() String goods=(String)enumkeys.nextElement(); goods=handleS

温馨提示

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

最新文档

评论

0/150

提交评论