《第9章 JSP与JavaBeans编程.ppt》由会员分享,可在线阅读,更多相关《第9章 JSP与JavaBeans编程.ppt(35页珍藏版)》请在优知文库上搜索。
1、重点内容:重点内容:l 为什么要使用为什么要使用JavaBeansl 实现简单的实现简单的JavaBeansl在页面中使用在页面中使用JavaBeansl通过通过JavaBeans实现数据库的访问实现数据库的访问lJSP与与JavaBeans编程实例编程实例JavaBean是一个软件组件,被设计成可以在不同的环境里重复使用。Bean的功能没有限制,例如:l检查一个文件的拼写l预测一只股票的业绩。l图形用户界面上的一个按钮。l实时多媒体解码软件。l一个Bean可以被设计成在用户工作站上独立工作,l可以与其他一组分布式组件协调工作。JavaBeans就是一个独立的控件,即具有独立的功能,可以重复使
2、用,并且可以与其他控件通讯。将JavaBeans按功能分类,可分为“可视化的JavaBeans”和“非可视化的JavaBeans”两类。l可视化的JavaBeans就是在画面上可以显示出来的JavaBeans。通过属性接口接收数据并根据接收的信息将数据显示在画面上,这就是可视化JavaBeans的功能。一般用到的组件大部分都是可视化的。l非可视化的JavaBeans,就是没有GUI图形用户界面的JavaBeans。在JSP程序中常用来封装事务逻辑、数据库操作等等,可以很好地实现业务逻辑和前台程序(如jsp文件)的分离,使得系统具有更好的健壮性和灵活性。如何用Eclipse创建一个JavaBea
3、ns:(1)首先打开Eclipse程序,然后执行“文件”|“新建”|“类”命令,打开Object Gallery对话框,如图所示。(2)在源代码中定义变量hello,代码为:String hello=”;然后,选择“源代码”|“生成Getter和Setter”选项,如图所示。设置完成后,生成代码如下:1package com.jsp.chap09;2public class Hello 3 String hello=;4 public String getHello()5 return hello;6 7 public void setHello(String hello)8 this.hel
4、lo=hello;9 10下面的代码是index.jsp,这段JSP程序将调用前面创建好的Hello World组件。1234589 JSP Page10 11 12 13 14 15 1Simple属性一个简单属性表示一个伴随有一对get/set方法的变量。属性名与和该属性相关的get/set方法名对应。例如,如果有setX和getX方法,则暗指有一个名为“X”的属性。如果有一个方法名为isX,则通常暗指“X”是一个布尔属性(即X的值为true或false)。例:1public class example1 extends Canvas 2 /属性名为ourString,类型为字符串3 st
5、ring ourString=Hello;4/example1()是example1的构造函数5 public example1()6 setBackground(Color.red);7 setForeground(Color.blue);8 9 public void setString(String newString)10 ourString=newString;11 12 public String getString()13 return ourString;14 152Indexed属性一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。
6、该属性也可一次设置或取得整个数组的值。例:1import java.awt.Canvas;2import java.awt.Color;3public class example2 extends Canvas 4/dataset是一个indexed属性5 int dataSet=1,2,3,4,5,6;6 public example2()/*设置整个数组*/7 setBackground(Color.red);8 setForeground(Color.blue);9 10 public void setDataSet(int x)/*设置数组中的单个元素值*/11 dataSet=x;1
7、2 13 public void setDataSet(int index,int x)/*设置整个数组值*/14 dataSetindex=x;15 16 public int getDataSet()17 return dataSet;18 19 public int getDataSet(int x)20 return dataSetx;21 22 3Constrained属性一个JavaBeans的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。Constrained属性的监听者通过抛出PropertyVeto
8、Exception来阻止该属性值的改变。例:1public class JellyBean extends Canvas 2 private PropertyChangeSupport changes=new PropertyChangeSupport(this);3 private VetoableChangeSupport Vetos=new VetoableChangeSupport(this);4 .5 public void setPriceInCents(int newPriceInCents)throws PropertyVetoException 6 int oldPriceI
9、nCents=ourPriceInCents;7 vetos.fireVetoableChange(priceInCents,new Integer(OldPriceInCents),new Integer(newPriceInCents);8 ourPriceInCents=newPriceInCents;9 changes.firePropertyChange(priceInCents,new Integer(oldPriceInCents),new Integer(newPriceInCents);10 11 public void addVetoableChangeListener(V
10、etoableChangeListener l)12 vetos.addVetoableChangeListener(l);13 14 public void removeVetoableChangeListener(VetoableChangeListener l)15 vetos.removeVetoableChangeListener(l);16 17 .18 4Bound属性一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bea
11、n,至于接收事件的Bean应做什么动作由其自己定义,例:1import java.awt.Canvas;2import java.beans.PropertyChangeListener;3import java.beans.PropertyChangeSupport;45public class example3 extends Canvas 67 String ourString=Hello;8 private PropertyChangeSupport changes=new PropertyChangeSupport(this);910 public void setString(st
12、ring newString)11 String oldString=ourString;12 ourString=newString;13 changes.firePropertyChange(ourString,oldString,newString);14 1516 public String getString()17 return ourString;18 1920 public void addPropertyChangeListener(PropertyChangeLisener l)21 changes.addPropertyChangeListener(l);22 2324
13、public void removePropertyChangeListener(PropertyChangeListener l)25 changes.removePropertyChangeListener(l);26 27 1的作用是定义生成和使用Bean的环境。即如果使用,就可以定义Bean的名称、类型、以及使用期限等内容。格式如下:范例2是设定通过定义的Bean对象属性的标记。的语法格式有以下4种:字符串常量:或请求参数:或匹配Bean中指定的属性:或表达式:jsp:setProperty name=“beanName”property=“propName”value=“”/name
14、属性:name属性用来指定JavaBeans的名称,这个JavaBeans必须首先使用操作指令来实例化。property属性:property属性被用来指定JavaBeans需要定制的属性的名称。如下图所示Param属性:使用request中的一个参数值来指定Bean中的一个属性值。Value属性:使用指定的值来设定Bean属性。3动作用于从一个JavaBeans中获取某个属性的值,无论原先这个属性是什么类型的,都将被转换为一个String类型的值。语法格式为:Name属性这个属性用来指定JavaBeans的名称,这个JavaBeans组件对象必须已经使用操作指令实例化了。Property属性
15、Property属性用来指定要读取的JavaBeans组件对象的属性的名称。4JavaBeans的作用域JavaBeans组件设定的Scope属性,使得JavaBeans组件对于不同的任务具有不同的作用域。Scope属性具有4个可能的值分别是page、request、session和application,分别代表JavaBeans的4种不同的作用域。Page的作用域Page Scope类型的JavaBeans组件的作用域为JSP 程序的运行周期,当JSP程序运行结束那么该JavaBeans组件的生命周期也就结束了。PageScope类型的JavaBeans组件程序的作用范围只限于当前的JSP
16、程序中,它无法在别的JSP程序中起作用,对应于不同的客户端请求,服务器都会创建新的JavaBeans组件对象,而且,一旦客户端的请求执行完毕,那么该JavaBeans对象会马上注销,无法为别的客户端请求所使用。167 8 9 10 11 Day of month:is12 Year:is13 Month:is14 Time:is15 16 DST Offset:is17 Zone Offset:is18 19 20 21Request的作用域当JavaBeans的Scope属性值被设为request时,和都会把JavaBeans带到下一页面。例:调用beanPage.jsp页Session的作用域如果一个JavaBeans组件的Scope 属性值为session,这一类型的JavaBeans组件的作用域就是某个会话过程所经历的时间,例如:1678第二页910你已经访问了11个页面Application的作用域如果JavaBeans的Scope属性被指定为application,那么它的作用域和Application对象一样。使用这种类型的JavaBeans组件,可以在多个用户之间共享全