第9章 JSP与JavaBeans编程.ppt

上传人:韩长文 文档编号:5030347 上传时间:2020-01-29 格式:PPT 页数:35 大小:755KB
返回 下载 相关 举报
第9章 JSP与JavaBeans编程.ppt_第1页
第1页 / 共35页
第9章 JSP与JavaBeans编程.ppt_第2页
第2页 / 共35页
第9章 JSP与JavaBeans编程.ppt_第3页
第3页 / 共35页
第9章 JSP与JavaBeans编程.ppt_第4页
第4页 / 共35页
第9章 JSP与JavaBeans编程.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《第9章 JSP与JavaBeans编程.ppt》由会员分享,可在线阅读,更多相关《第9章 JSP与JavaBeans编程.ppt(35页珍藏版)》请在三一文库上搜索。

1、第9章 JSP与JavaBeans编程,重点内容: 为什么要使用JavaBeans 实现简单的JavaBeans 在页面中使用JavaBeans 通过JavaBeans实现数据库的访问 JSP与JavaBeans编程实例,一、为什么要使用JavaBeans,JavaBean是一个软件组件,被设计成可以在不同的环境里重复使用。Bean的功能没有限制,例如: 检查一个文件的拼写 预测一只股票的业绩。 图形用户界面上的一个按钮。 实时多媒体解码软件。 一个Bean可以被设计成在用户工作站上独立工作, 可以与其他一组分布式组件协调工作。,1、什么是JavaBeans,JavaBeans就是一个独立的控

2、件,即具有独立的功能,可以重复使用,并且可以与其他控件通讯。 将JavaBeans按功能分类,可分为“可视化的JavaBeans”和“非可视化的JavaBeans”两类。 可视化的JavaBeans就是在画面上可以显示出来的JavaBeans。通过属性接口接收数据并根据接收的信息将数据显示在画面上,这就是可视化JavaBeans的功能。一般用到的组件大部分都是可视化的。 非可视化的JavaBeans,就是没有GUI图形用户界面的JavaBeans。在JSP程序中常用来封装事务逻辑、数据库操作等等,可以很好地实现业务逻辑和前台程序(如jsp文件)的分离,使得系统具有更好的健壮性和灵活性。,2、J

3、avaBeans的种类,二、实现简单的JavaBeans,如何用Eclipse创建一个JavaBeans: (1)首先打开Eclipse程序,然后执行“文件”|“新建”|“类”命令,打开Object Gallery对话框,如图所示。,(2)在源代码中定义变量hello,代码为: String hello=”; 然后,选择“源代码”|“生成Getter和Setter”选项,如图所示。,设置完成后,生成代码如下: 1 package com.jsp.chap09; 2 public class Hello 3 String hello = “; 4 public String getHello()

4、 5 return hello; 6 7 public void setHello(String hello) 8 this.hello = hello; 9 10 ,下面的代码是index.jsp,这段JSP程序将调用前面创建好的Hello World组件。 1 2 3 4 5 8 9 JSP Page 10 11 12 13 14 15 ,三、在页面中使用JavaBeans,1Simple属性 一个简单属性表示一个伴随有一对get/set方法的变量。属性名与和该属性相关的get/set方法名对应。例如,如果有setX和getX方法,则暗指有一个名为“X”的属性。如果有一个方法名为isX,则

5、通常暗指“X”是一个布尔属性(即X的值为true或false)。例: 1 public class example1 extends Canvas 2 /属性名为ourString,类型为字符串 3 string 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 = newStrin

6、g; 11 12 public String getString() 13 return ourString; 14 15 ,1、JavaBeans的属性,2Indexed属性 一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。例: 1 import java.awt.Canvas; 2 import java.awt.Color; 3 public class example2 extends Canvas 4 /dataset是一个indexed属性 5 int dataSet = 1, 2, 3, 4, 5

7、, 6; 6 public example2() /* 设置整个数组*/ 7 setBackground(Color.red); 8 setForeground(Color.blue); 9 ,10 public void setDataSet(int x) /* 设置数组中的单个元素值*/ 11 dataSet = x; 12 13 public void setDataSet(int index, int x) /* 设置整个数组值 */ 14 dataSetindex = x; 15 16 public int getDataSet() 17 return dataSet; 18 19

8、public int getDataSet(int x) 20 return dataSetx; 21 22 ,3Constrained属性 一个JavaBeans的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。Constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变。例:,1 public class JellyBean extends Canvas 2 private PropertyChangeSupport changes=new PropertyChangeS

9、upport(this); 3 private VetoableChangeSupport Vetos=new VetoableChangeSupport(this); 4 5 public void setPriceInCents(int newPriceInCents)throws PropertyVetoException 6 int oldPriceInCents=ourPriceInCents; 7 vetos.fireVetoableChange(“priceInCents“,new Integer(OldPriceInCents),new Integer(newPriceInCe

10、nts); 8 ourPriceInCents=newPriceInCents;,9 changes.firePropertyChange(“priceInCents“,new Integer(oldPriceInCents),new Integer(newPriceInCents); 10 11 public void addVetoableChangeListener(VetoableChangeListener l) 12 vetos.addVetoableChangeListener(l); 13 14 public void removeVetoableChangeListener(

11、VetoableChangeListener l) 15 vetos.removeVetoableChangeListener(l); 16 17 18 ,4Bound属性 一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义,例:,1 import java.awt.Canvas; 2 import java.beans.PropertyChangeListener; 3 impor

12、t java.beans.PropertyChangeSupport; 4 5 public class example3 extends Canvas 6 7 String ourString = “Hello“; 8 private PropertyChangeSupport changes = new PropertyChangeSupport(this); 9 10 public void setString(string newString) 11 String oldString = ourString; 12 ourString = newString; 13 changes.f

13、irePropertyChange(“ourString“, oldString, newString); 14 ,15 16 public String getString() 17 return ourString; 18 19 20 public void addPropertyChangeListener(PropertyChangeLisener l) 21 changes.addPropertyChangeListener(l); 22 23 24 public void removePropertyChangeListener(PropertyChangeListener l)

14、25 changes.removePropertyChangeListener(l); 26 27 ,1 的作用是定义生成和使用Bean的环境。即如果使用,就可以定义Bean的名称、类型、以及使用期限等内容。格式如下: 范例 ,2、在JSP中使用JavaBeans,2 是设定通过定义的Bean对象属性的标记。的语法格式有以下4种: 字符串常量: 或 请求参数: 或 匹配Bean中指定的属性: 或 表达式:”/, name属性:name属性用来指定JavaBeans的名称,这个JavaBeans必须首先使用操作指令来实例化。 property属性:property属性被用来指定JavaBeans

15、需要定制的属性的名称。如下图所示 Param属性:使用request中的一个参数值来指定Bean中的一个属性值。 Value属性:使用指定的值来设定Bean属性。,3 动作用于从一个JavaBeans中获取某个属性的值,无论原先这个属性是什么类型的,都将被转换为一个String类型的值。语法格式为: Name属性 这个属性用来指定JavaBeans的名称,这个JavaBeans组件对象必须已经使用操作指令实例化了。 Property属性 Property属性用来指定要读取的JavaBeans组件对象的属性的名称。,4JavaBeans的作用域 JavaBeans组件设定的Scope属性,使得J

16、avaBeans组件对于不同的任务具有不同的作用域。Scope属性具有4个可能的值分别是page、request、session和application,分别代表JavaBeans的4种不同的作用域。 Page的作用域 Page Scope类型的JavaBeans组件的作用域为JSP 程序的运行周期,当JSP程序运行结束那么该JavaBeans组件的生命周期也就结束了。PageScope类型的JavaBeans组件程序的作用范围只限于当前的JSP程序中,它无法在别的JSP程序中起作用,对应于不同的客户端请求,服务器都会创建新的JavaBeans组件对象,而且,一旦客户端的请求执行完毕,那么该J

17、avaBeans对象会马上注销,无法为别的客户端请求所使用。,1 6 7 8 9 10 11 Day of month:is 12 Year:is 13 Month:is 14 Time:is 15 16 DST Offset:is 17 Zone Offset:is 18 19 20 21 , Request的作用域 当JavaBeans的Scope属性值被设为request时,和都会把JavaBeans带到下一页面。 例: 调用beanPage.jsp页 , Session的作用域 如果一个JavaBeans组件的Scope 属性值为session,这一类型的JavaBeans组件的作用域

18、就是某个会话过程所经历的时间,例如:,1 7 8 第二页 9 10 你已经访问了 11 个页面, Application的作用域 如果JavaBeans的Scope属性被指定为application,那么它的作用域和Application对象一样。使用这种类型的JavaBeans组件,可以在多个用户之间共享全局信息。 1 6 7 8 您是第 9 位访客, 几个不同属性的作用域的区别 例。 1 package test; 2 import java.util.Date; 3 import java.text.*; 4 public class Common 5 Date d = new Date

19、(); 6 public String now(String s) 7 SimpleDateFormat formatter = new SimpleDateFormat(s); 8 return formatter.format(d); 9 10 date.jsp清单如下: 1 2 ,通过JavaBeans来访问数据库步骤为: (1)建立一个JavaBeans组件,将它设置为JavaBeans的类文件 (2)使用JavaBeans来完成与数据库的连接 实例介绍在JSP中利用JavaBeans通过JDBC-ODBC Bridge来访问数据库。 (1)创建一个JavaBeans,命名为DBCon

20、.java,并保存在支持JSP的Web服务器的JavaBeans包下,DBCon.java文件主要是封装与数据库的连接操作。下面是DBCon.java的代码,在JSP程序中将调用它。,四、通过JavaBeans实现数据库的访问,1 package com.jsp.chap09; 2 import java.io.*; 3 import javax.servlet.http.*; 4 import java.sql.*; 5 public class DBCon implements HttpSessionBindingListener 6 /当变量加入Session时自动执行此函数 7 pub

21、lic void valueBound(HttpSessionBindingEvent event) 8 9 /Session变量关闭时执行此函数 10 public void valueUnbound(HttpSessionBindingEvent event) 11 12 private Connection con = null; 13 public DBCon() 14 /建立数据库链接 15 BulidConnection(); 16 17 /建立数据库链接的方法 18 private void BulidConnection() 19 try 20 /加载数据库驱动程序 21 Cl

22、ass.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); 22 /与数据库连接,23 con = DriverManager.getConnection(“jdbc:odbc:user“); 24 catch (Exception ex) 25 System.out.println(ex.toString(); 26 27 28 public Connection getConnection() 29 /如果con为null,则重新建立连接 30 if (con = null) 31 BulidConnection(); 32 33 return con; 34

23、 35 public void close() 36 try 37 /关闭con 38 con.close(); 39 con = null; 40 catch (SQLException ex) 41 42 43 ,当执行查询操作时,将打开index.jsp页面,并显示出数据库中的相应的信息,下面是index.jsp文件的代码,代码中调用了前面编译好的JavaBeans。 1 2 3 4 5 6 通过Javabeans访问数据库 7 8 9 10 通过Javabeans访问数据库 11 12 13 14 15 16 ,24 25 26 编号 27 姓名 28 年龄 29 性别 30 31 3

24、5 36 37 38 39 40 41 48 49 50 51 ,例:实现了简单的购物车功能,用户对商品进行选择购买,在主页面中选择商品后,如果不满意,可以在商品确认页面中将该商品删除掉,具有一定的互动性。效果如图所示。,数据库的表结构如表9-1所示,五、JSP与JavaBeans编程实例,CuCart.java文件定义了购物车的基本模型。另外,CuCart.java文件和编译好的类文件都必须放置在test文件夹中,下面是CuCart.java文件的代码: 1 package com.jsp.chap09; 2 import javax.servlet.http.*; 3 import jav

25、a.util.Vector; 4 import java.util.Enumeration; 5 public class CuCart 6 Vector v = new Vector(); 7 String submit = null; 8 String item = null; 9 private void addItem(String name) 10 v.addElement(name); 11 ,12 private void removeItem(String name) 13 v.removeElement(name); 14 15 public void setItem(Str

26、ing name) 16 item = name; 17 18 public void setSubmit(String s) 19 submit = s; 20 21 public String getItems() 22 String s = new Stringv.size(); 23 v.copyInto(s); 24 return s; 25 26 public void processRequest(HttpServletRequest request) 27 if (submit = null) 28 addItem(item); 29 30 if (submit.equals(

27、“添加“) 31 addItem(item); 32 else if (submit.equals(“删除“) 33 removeItem(item); 34 35 reset(); 36 37 private void reset() 38 submit = null; 39 item = null; 40 41 ;,下面是index.jsp文件的代码,代码中定制了程序中的商品信息: 1 2 3 4 购物车 5 6 7 8 9 10 请添加或删除商品: 11 12 添加商品: 13 14 桑塔纳2000豪华型 15 奥拓-都市贝贝 16 红旗V6 17 爱国者MP3-F158 18 联想V48数码相机 19 联想G828手机 20 JSP高级应用 21 6500帧的“帝国战车”鼠标 22 23 24 25 26 27 28 29 30 ,carts.jsp文件会接收从index.jsp文件传送过来的商品信息,并在浏览器中显示出来,然后再调用index.jsp文件,增强了互动性,使客户可以对商品进行选择,下面是代码: 1 2 3 商品选择 4 5 6 7 10 11 您已选购的商品: 12 13 17 18 21 22 23 24 25 /在carts.jsp文件中包含index.jsp文件,使carts.jsp中显示出index.jsp的内容 26 27 28 29 ,感谢,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1