当前位置:文档之家› javabean属性

javabean属性

javabean属性
javabean属性

JavaBean的属性

JavaBean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量。在JavaBean设计中,按照属性的不同作用又细分为四类:Simple, Index, Bound与Constrained属性。

3.1.1 Simple属性

一个简单属性表示一个伴随有一对get/set方法(C语言的过程或函数在Java程序中称为"方法")的变量。属性名与和该属性相关的get/set方法名对应。例如:如果有setX和getX方法,则暗指有一个名为"X"的属性。如果有一个方法名为isX,则通常暗指"X"是一个布尔属性(即X的值为true或false)。例如在下面这个程序中:

public class alden1 extends Canvas {

string ourString= "Hello"; //属性名为ourString,类型为字符串

public alden1(){ //alden1()是alden1的构造函数,与C++中构造函数的意义相同setBackground(Color.red);

setForeground(Color.blue);

}

/* "set"属性*/

public void setString(String newString) {

ourString=newString;

}

/* "get"属性 */

public String getString() {

return ourString;

}

}

3.1.2 Indexed属性

一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。例:

public class alden2 extends Canvas {

int[] dataSet={1,2,3,4,5,6}; // dataSet是一个indexed属性

public alden2() {

setBackground(Color.red);

setForeground(Color.blue);

}

/* 设置整个数组*/

public void setDataSet(int[] x){

dataSet=x;

}

/* 设置数组中的单个元素值 */

public void setDataSet(int index, int x){

dataSet[index]=x;

}

/* 取得整个数组值 */

public int[] getDataSet(){

return dataSet;

}

/* 取得数组中的指定元素值 */

public int getDataSet(int x){

return dataSet[x];

}

}

3.1.3 Bound属性

一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义。

图3.1是一个简单Bound属性示意图,当PushButton的background属性与Dialog的background属性bind时,若PushButton的background属性发生变化时,Dialog的background 属性也发生同样的变化。例:

public class alden3 extends Canvas{

String ourString= "Hello"; //ourString是一个bound属性

private PropertyChangeSupport changes = new PropertyChangeSupport(this);

/** 注:Java是纯面向对象的语言,如果要使用某种方法则必须指明是要使用哪个对象的方法,在下面的程序中要进行点火事件的操作,这种操作所使用的方法是在PropertyChangeSupport类中的。所以上面声明并实例化了一个changes对象,在下面将使用changes的firePropertyChange方法来点火ourString的属性改变事件。*/

public void setString(string newString){

String oldString = ourString;

ourString = newString;

/* ourString的属性值已发生变化,于是接着点火属性改变事件 */

changes.firePropertyChange("ourString",oldString,newString);

}

public String getString(){

return ourString;

}

/** 以下代码是为开发工具所使用的。我们不能预知alden3将与哪些其它的Bean组合成为一个应用,无法预知若alden3的ourString属性发生变化时有哪些其它的组件与此变化有关,因而alden3这个Bean要预留出一些接口给开发工具,开发工具使用这些接口,把其它的JavaBean对象与alden3挂接。*/

public void addPropertyChangeListener(PropertyChangeLisener l){

changes.addPropertyChangeListener(l);

}

public void removePropertyChangeListener(PropertyChangeListener l){

changes.removePropertyChangeListener(l);

}

通过上面的代码,开发工具调用changes的addPropertyChangeListener方法把其它JavaBean 注册入ourString属性的监听者队列l中,l是一个Vector数组,可存储任何Java对象。开发工具也可使用changes的removePropertyChangeListener方法,从l中注销指定的对象,使alden3的ourString属性的改变不再与这个对象有关。当然,当程序员手写代码编制程序时,也可直接调用这两个方法,把其它Java对象与alden3挂接。

3.1.4 Constrained属性

一个JavaBean的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变。过程如图3.2

例:下面程序中的constrained属性是PriceInCents。

public class JellyBean extends Canvas{

private PropertyChangeSupport changes=new PropertyChangeSupport(this);

private VetoableChangeSupport Vetos=new VetoableChangeSupport(this);

/*与前述changes相同,可使用VetoableChangeSupport对象的实例Vetos中的方法,在特定条件下来阻止PriceInCents值的改变。*/

......

public void setPriceInCents(int newPriceInCents) throws PropertyVetoException {

/*方法名中throws PropertyVetoException的作用是当有其它Java对象否决PriceInCents的改变时,要抛出例外。*/ /* 先保存原来的属性值*/

int oldPriceInCents=ourPriceInCents;

/**点火属性改变否决事件*/

vetos.fireVetoableChange("priceInCents",new Integer(OldPriceInCents), new Integer(newPriceIn Cents));

/**若有其它对象否决priceInCents的改变,则程序抛出例外,不再继续执行下面的两条语句,方法结束。若无其它对象否决priceInCents的改变,则在下面的代码中把ourPriceIncents赋予新值,并点火属性改变事件*/

ourPriceInCents=newPriceInCents;

changes.firePropertyChange("priceInCents", new Integer(oldPriceInCents),new Integer(newPriceI nCents));

}

/**与前述changes相同,也要为PriceInCents属性预留接口,使其它对象可注册入PriceInCents 否决改变监听者队列中,或把该对象从中注销

public void addVetoableChangeListener(VetoableChangeListener l)

{ vetos.addVetoableChangeListener(l);

}

public void removeVetoableChangeListener(VetoableChangeListener l){

vetos.removeVetoableChangeListener(l);

}

......

}

从上面的例子中可看到,一个constrained属性有两种监听者:属性变化监听者和否决属性改变的监听者。否决属性改变的监听者在自己的对象代码中有相应的控制语句,在监听到有constrained属性要发生变化时,在控制语句中判断是否应否决这个属性值的改变。

总之,某个Bean的constrained属性值可否改变取决于其它的Bean或者是Java对象是否允许这种改变。允许与否的条件由其它的Bean或Java对象在自己的类中进行定义。

JavaBean的事件

事件处理是JavaBean体系结构的核心之一。通过事件处理机制,可让一些组件作为事件源,发出可被描述环境或其它组件接收的事件。这样,不同的组件就可在构造工具内组合在一起,组件之间通过事件的传递进行通信,构成一个应用。从概念上讲,事件是一种在"源对象"和"监听者对象"之间,某种状态发生变化的传递机制。事件有许多不同的用途,例如在Windows系统中常要处理的鼠标事件、窗口边界改变事件、键盘事件等。在Java和JavaBean 中则是定义了一个一般的、可扩充的事件机制,这种机制能够:

对事件类型和传递的模型的定义和扩充提供一个公共框架,并适合于广泛的应用。

与Java语言和环境有较高的集成度。

事件能被描述环境捕获和点火。

能使其它构造工具采取某种技术在设计时直接控制事件,以及事件源和事件监听者之间的联

系。

事件机制本身不依赖于复杂的开发工具。

特别地,还应当:

能够发现指定的对象类可以生成的事件。

能够发现指定的对象类可以观察(监听)到的事件。

提供一个常规的注册机制,允许动态操纵事件源与事件监听者之间的关系。

不需要其它的虚拟机和语言即可实现。

事件源与监听者之间可进行高效的事件传递。

能完成JavaBean事件模型与相关的其它组件体系结构事件模型的中立映射。

3.2.1 概述

JavaBean事件模型的总体结构图见图3.3,

主要构成有:事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承java.util.EventListener。实现了事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,相应的状态通常都封装在事件状态对象中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监听者不能直接实现事件监听者接口,或者还有其它的额外动作时,就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例,来建立它们之间的联系。

3.2.2 事件状态对象(Event State Object)

与事件发生有关的状态信息一般都封装在一个事件状态对象中,这种对象是

java.util.EventObject的子类。按设计习惯,这种事件状态对象类的名应以Event结尾。例如:public class MouseMovedExampleEvent extends java.util.EventObject

{ protected int x, y;

/*创建一个鼠标移动事件MouseMovedExampleEvent */

MouseMovedExampleEvent(https://www.doczj.com/doc/4711733854.html,ponent source, Point location) {

super(source);

x = location.x;

y = location.y;

}

/* 获取鼠标位置*/

public Point getLocation() {

return new Point(x, y);

}}

3.2.3事件监听者接口(EventListener Interface)与事件监听者

由于Java事件模型是基于方法调用,因而需要一个定义并组织事件操纵方法的方式。JavaBean中,事件操纵方法都被定义在继承了java.util.EventListener类的EventListener接口中,按规定,EventListener接口的命名要以Listener结尾。任何一个类如果想操纵在EventListener接口中定义的方法都必须以实现这个接口方式进行。这个类也就是事件监听者。例如:

/*先定义了一个鼠标移动事件对象*/

public class MouseMovedExampleEvent extends java.util.EventObject {

// 在此类中包含了与鼠标移动事件有关的状态信息

...

}

/*定义了鼠标移动事件的监听者接口*/

interface MouseMovedExampleListener extends java.util.EventListener {

/*在这个接口中定义了鼠标移动事件监听者所应支持的方法*/

void mouseMoved(MouseMovedExampleEvent mme);

}

在接口中只定义方法名,方法的参数和返回值类型。如:上面接口中的mouseMoved方法的具体实现是在下面的ArbitraryObject类中定义的。

class ArbitraryObject implements MouseMovedExampleListener {

public void mouseMoved(MouseMovedExampleEvent mme)

{ ... }

ArbitraryObject就是MouseMovedExampleEvent事件的监听者。

3.2.4 事件监听者的注册与注销

为了各种可能的事件监听者把自己注册入合适的事件源中,建立源与事件监听者间的事件流,事件源必须为事件监听者提供注册和注销的方法。在前面的bound属性介绍中已看到了这种使用过程,在实际中,事件监听者的注册和注销要使用标准的设计格式:

public void add< ListenerType>(< ListenerType> listener);

public void remove< ListenerType>(< ListenerType> listener);

例如:

首先定义了一个事件监听者接口:

public interface ModelChangedListener extends java.util.EventListener {

void modelChanged(EventObject e);

}

接着定义事件源类:

public abstract class Model {

private Vector listeners = new Vector(); // 定义了一个储存事件监听者的数组

/*上面设计格式中的< ListenerType>在此处即是下面的ModelChangedListener*/

public synchronized void addModelChangedListener(ModelChangedListener mcl) { listeners.addElement(mcl); }//把监听者注册入listeners数组中

public synchronized void removeModelChangedListener(ModelChangedListener mcl) { listeners.removeElement(mcl); //把监听者从listeners中注销

/*以上两个方法的前面均冠以synchronized,是因为运行在多线程环境时,可能同时有几个对象同时要进行注册和注销操作,使用synchronized来确保它们之间的同步。开发工具或程序员使用这两个方法建立源与监听者之间的事件流*/

protected void notifyModelChanged() {/**事件源使用本方法通知监听者发生了modelChanged事件*/

Vector l;

EventObject e = new EventObject(this);

/* 首先要把监听者拷贝到l数组中,冻结EventListeners的状态以传递事件。这样来确保在事件传递到所有监听者之前,已接收了事件的目标监听者的对应方法暂不生效。*/ synchronized(this) {

l = (Vector)listeners.clone();

}

for (int i = 0; i < l.size(); i++) {

/* 依次通知注册在监听者队列中的每个监听者发生了modelChanged事件,

并把事件状态对象e作为参数传递给监听者队列中的每个监听者*/ ((ModelChangedListener)l.elementAt(i)).modelChanged(e);

}

}

在程序中可见事件源Model类显式地调用了接口中的modelChanged方法,实际是把事件状态对象e作为参数,传递给了监听者类中的modelChanged方法。

3.2.5适配类

适配类是Java事件模型中极其重要的一部分。在一些应用场合,事件从源到监听者之间的传递要通过适配类来"转发"。例如:当事件源发出一个事件,而有几个事件监听者对象都可接收该事件,但只有指定对象做出反应时,就要在事件源与事件监听者之间插入一个事件适

配器类,由适配器类来指定事件应该是由哪些监听者来响应。

图3.4是适配类模型的框架:从上图中可见,适配类成为了事件监听者,事件源实际是把适配类作为监听者注册入监听者队列中,而真正的事件响应者并未在监听者队列中,事件响应者应做的动作由适配类决定。目前绝大多数的开发工具在生成代码时,事件处理都是通过适配类来进行的。

JavaBean用户化

JavaBean开发者可以给一个Bean添加用户化器(Customizer)、属性编辑器(PropertyEditor)和BeanInfo接口来描述一个Bean的内容,Bean的使用者可在构造环境中通过与Bean附带在一起的这些信息来用户化Bean的外观和应做的动作。一个Bean不必都有BeanCustomizer、PrpertyEditor和BeanInfo,根据实际情况,这些是可选的,当有些Bean较复杂时,就要提供这些信息,以Wizard的方式使Bean的使用者能够用户化一个Bean。有些简单的Bean可能这些信息都没有,则构造工具可使用自带的透视装置,透视出Bean的内容,并把信息显示到标准的属性表或事件表中供使用者用户化Bean,前几节提到的Bean的属性、方法和事件名要以一定的格式命名,主要的作用就是供开发工具对Bean进行透视。当然也是给程序员在手写程序中使用Bean提供方便,使他能观其名、知其意。

3.3.1用户化器接口(Customizer Interface)

当一个Bean有了自己的用户化器时,在构造工具内就可展现出自己的属性表。在定义用户化器时必须要实现java.beans.Customizer接口。例如,下面是一个"按钮"Bean的用户化一器:

public class OurButtonCustomizer extends Panel implements Customizer {

... ...

/*当实现象OurButtonCustomizer这样的常规属性表时,一定要在其中实现addProperChangeListener

和removePropertyChangeListener,这样,构造工具可用这些功能代码为属性事件添加监听者。*/

... ...

private PropertyChangeSupport changes=new PropertyChangeSupport(this);

public void addPropertyChangeListener(PropertyChangeListener l) {

changes.addPropertyChangeListener(l);

public void removePropertyChangeListener(PropertyChangeListener l) {

changes.removePropertyChangeListener(l);

}

... ...

3.3.2 属性编辑器接口(PropertyEditor Interface)

一个JavaBean可提供PropertyEditor类,为指定的属性创建一个编辑器。这个类必须继承自java.beans.PropertyEditorSupport类。构造工具与手写代码的程序员不直接使用这个类,而是在下一小节的BeanInfo中实例化并调用这个类。例:

public class MoleculeNameEditor extends java.beans.PropertyEditorSupport {

public String[] getTags() {

String resule[]={ "HyaluronicAcid","Benzene","buckmisterfullerine", "cyclohexane","ethane","water"};

return resule;}

}

上例中是为Tags属性创建了属性编辑器,在构造工具内,可从下拉表格中选择MoleculeName 的属性应是"HyaluronicAid"或是"water"。

3.3.3BeanInfo接口

每个Bean类也可能有与之相关的BeanInfo类,在其中描述了这个Bean在构造工具内出现时的外观。BeanInfo中可定义属性、方法、事件,显示它们的名称,提供简单的帮助说明。例如:

public class MoleculeBeanInfo extends SimpleBeanInfo {

public PropertyDescriptor[] getPropertyDescriptors() {

try {

PropertyDescriptor pd=new PropertyDescriptor("moleculeName",Molecule.class);

/*通过pd引用了上一节的MoleculeNameEditor类,取得并返回moleculeName属性*/

pd.setPropertyEditorClass(MoleculeNameEditor.class);

PropertyDescriptor result[]={pd};

return result;

} catch(Exception ex) {

System.err.println("MoleculeBeanInfo: unexpected exeption: "+ex);

return null;

}

}

}

JavaBean持久化

当一个JavaBean在构造工具内被用户化,并与其它Bean建立连接之后,它的所有状态都应当可被保存,下一次被load进构造工具内或在运行时,就应当是上一次修改完的信息。为了能做到这一点,要把Bean的某些字段的信息保存下来,在定义Bean时要使它实现java.io.Serializable接口。例如:

public class Button implements java.io.Serializable {

}

实现了序列化接口的Bean中字段的信息将被自动保存。若不想保存某些字段的信息则可在

这些字段前冠以transient或static关键字,transient和static变量的信息是不可被保存的。通常,一个Bean所有公开出来的属性都应当是被保存的,也可有选择地保存内部状态。 Bean 开发者在修改软件时,可以添加字段,移走对其它类的引用,改变一个字段的

private/protected/public状态,这些都不影响类的存储结构关系。然而,当从类中删除一个字段,改变一个变量在类体系中的位置,把某个字段改成transient/static,或原来是transient/static,现改为别的特性时,都将引起存储关系的变化。

5 JavaBean的存储格式

JavaBean组件被设计出来后,一般是以扩展名为jar的Zip格式文件存储,在jar中包含与JavaBean有关的信息,并以MANIFEST文件指定其中的哪些类是JavaBean。以jar文件存储的JavaBean在网络中传送时极大地减少了数据的传输数量,并把JavaBean运行时所需要的一些资源捆绑在一起本章主要论述了JavaBeans的一些内部特性及其常规设计方法,参考的是JavaBeans规范1.0A版本。随着世界各大ISV对JavaBeans越来越多的支持,规范在一些细节上还在不断演化,但基本框架不会再有大的变动。

“javabean技术”单元习题

“JavaBean技术”单元习题 一、填空题 1.___JAVABEAN________和JSP想结合,可以实现表现层和商业逻辑层的分离。 2.在JSP 中可以使用___________操作来设置Bean 的属性,也可以使用 ___________操作来获取Bean 的值。 3.___________操作可以定义一个具有一定生存范围以及一个唯一id的JavaBean的实例。 4.JavaBean有四个scope,它们分别为___________、___________、___________和___________。 二、判断题 1.中的name 及property 区分大小写。(T ) 2. 在JavaBean 中有很多方法,其中包含了主方法(F )。 3. JavaBean中的属性既可以是public型的,也可以是private型的。(F ) 4. JavaBean中的方法既可以是public型的,也可以是private型的。(F )5.JavaBean实质上是一个Java 类,该类可以被JSP程序进行直接调用.( F ) 6. 编写JavaBean可以先不必加入到JSP 程序中调用,而直接用main 方法来进行调试,调试好后就可以在JSP中使用了。(T ) 三、选择题 1. 关于JavaBean 正确的说法是:() (A)Java 文件与Bean所定义的类名可以不同,但一定要注意区分字母的大小写。 (B)在JSP 文件中引用Bean,其实就是用语句。 (C)被引用的Bean 文件的文件名后缀为.java 。 (D)Bean 文件放在任何目录下都可以被引用。 2.在JSP 中调用JavaBean 时不会用到的标记是:() (A) (B) (C) (D) 3.在JSP 中使用标记时,不会出现的属性是:() (A)name (B)property (C)value (D)以上皆不会出现 4.在项目中已经建立了一个JavaBean 该类为:bean.Student,给bean 具有name 属性,则下面标签用法正确的是:() (A) (B)hello student! (C) hello student! (D) 5.在JSP 中想要使用JavaBean:mypackage.mybean,则以下写法正确的是()(选择一项)

JavaBean规范入门

JavaBean其实就是一个Java类,但是它必须遵守一定的编写规则。JavaBean从功能上来讲,我将它分为业务Bean和实体Bean两类,下面我通过 一个实体Bean的开发示例,来讲述JavaBean开发中的一些基础技术。 实体Bean的主要作用是用来对系统中要用到的数据进行封装,这些数据包括 用户从前台的输入和从数据库中读取的数据等等,是JavaBean中较简单的一类。SimpleBean.java: package com.myapp.beans; public class SimpleBean { private String name; private String password; public SimpleBean() { System.out.println("*SimpleBean*"); } public void setName(String name) { https://www.doczj.com/doc/4711733854.html, = name; } public void setPassword(String password) { this.password = password; } public String getName() { return https://www.doczj.com/doc/4711733854.html,; } public String getPassword() { return this.password; } } 以上代码就是一个简单的JavaBean的示例,它严格遵守了JavaBean的编码 规则,即: ⑴ JavaBean必须放在一个包中 ⑵ JavaBean必须申明为public class ⑶ JavaBean的所有属性必须申明为private ⑷通过setter方法和getter方法设值和取值 ⑸通过JSP调用时,则需一个无参的构造方法 ⑹编写代码要严格遵守Java程序的命名规范 现在就可以在JSP页面里来调用这个JavaBean了。编写index.jsp页面如 下: <%@page language="java"contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="com.myapp.beans.*"%>

javabean基本知识点

JavaBean是描述java的软组件模型,有点类似microsoft的com组件。Javabean组件是java类,这些类遵循一个接口的格式,以便于使用方法来命名,底层行为以继承或实现的行为能够把类看成标准的javabean组件进行构造。 Javabean具有以下特性: 1.0可以实现代码的重复利用。 2.0易维护性,易使用性,易编写性。 3.0可以在支持java的任何平台上工作,而不需要重新编译。 4.0可以在类部,网内或者网络之间进行传输。 5.0可以以其它部件的模式进行工作。 Javabean分为可视化和非可视化,如AWT下的应用就是可视化领域。现在,javabean更多的应用在非可视化领域,它在服务端应用方面表现出了越来越强的生命力。非可视化javabean在jsp程序常用来封装事务逻辑,数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和稳定性。 Javabean在设计中,按照属性的不同作用有细分为4类:simple(简单的),Index(索引的),Bound(绑定的)与Constrained(约束的). 1.0Simple(简单的) 一个简单属性表示一个伴随有一对get()/set()方法的变量。属性名和该属性相关的get/set方法名对应。列:如果有一个setX()和getX()方法,则暗指有一个名为X的属性。如果有一个方法名为isX(),则通常有 publicclass BeanDem { private String name="tom"; privateboolean active=true; public String getName() { return name; } publicvoid setName(String name) { https://www.doczj.com/doc/4711733854.html, = name; } publicboolean isActive() { return active; } publicvoid setActive(boolean active) { this.active = active; } }

javaBean

javaBean 目录[隐藏] JavaBean(Java豆) JavaBean设计注意事项 JavaBean 的范围 [编辑本段] JavaBean(Java豆) JavaBean 概述 JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Jav a 类可以通过自身机制发现和操作这些JavaBean 属性。 用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用jav a代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。 JavaBean 的发展 最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid 控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个ja va web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的Bean(EJ B) JavaBean需求 JavaBean是java类,属于某些特定的译码指导方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。通过这些,JavaBean类可以用于下列方法:1.在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即使JavaB ean是被编译的,并且无法利用原始的源文件。 2.在Remote Method Invocation(RMI) 的分布式风格中,这项功能听起来并不让人兴奋,但是在未来的包含企业版的JavaBean后,将改变这种情况。 3.为了JavaBean的属性值和状态可以保存到磁盘上。 这里说的有些简单,如果想了解更多的东西,可以查阅一些资料。 [编辑本段] JavaBean设计注意事项

Javabean技术访问数据库

Javabean访问数据库 【摘要】:提出实现与数据库紧密结合的数据类型, 并使用该类型的对象访问和操作数据库。对B/S 模式下利用JSP和JavaBean 技术进行数据库访问开发强大的JSP程序, 使得显示页面和数据库访问和操作相分离的研究。可以提高数据库访问和操作的安全性, 便于调试和维护, 且可重用封装数据库操作的JavaBean, 从而增加代码的重用性和系统的安全性。 【关键词】:javabean 数据库 引言: 在开发web应用程序时,数据库的访问是必不可少的。通过对数据库的访问实现对数据的增、删、改、查等操作。这一系列的操作代码是烦琐且在每次对数据库的操作时都要重复编写的代码。Javabean的任务就是”一次性编写,任何地方执行,任何地方重用“。这就是是实际上解决困扰工业上的日益增加的复杂性问问题,提供一个简单、紧凑的和优秀的问题解决方案。在利用JSP开发时可使用Javabean技术来解决。 Javabean的概述 Javabean是一种Java语言写成的可重用的软件组件。组件是自含的、可重复使用的软件单元;Javabean中的组件,则可以使用可视的应用程序开发,可视编写地将他们编写到Java程序中.Javabean在容器中运行并对外提供具体的业务逻辑操作功能。一般来说,Javabean被分成两类:可视化Javabean和不可视化Javabean。可视化Javabean可以表示简单的GUI组件,不可视化Javabean 在后台完成业务逻辑处理功能,例如:访问数据库执行查询操作中的Javabean,这些javabean在运行时不需要任何可视的界面。在JSP程序中所用的Javabean 一般以不可视化的组件为主,而可视化的 Javabean一般用以Applet程序或者

JavaBean

第七章——JavaBean 一、教学内容 1.JavaBean的引入 2.什么是JavaBean? 3.JavaBean的编写和保存 4.JavaBean的调用 5.JavaBean在JSP中的数据传输 6.JavaBean使用范围 7.JavaBean与文件操作 8.JavaBean与数据库操作 二、教学目标 1.理解JavaBean;掌握JavaBean的编写和使用; 2.能在JSP中获取和修改bean属性。 三、教学重点及难点 1.重点:JavaBean的编写和使用;JSP中获取和修改bean属性。 2.难点:JSP中使用bean。 四、教学方式与方法 演示讲解法,任务驱动法,案例教学法,问题探究法,与多媒体教学演示相结合 五、实施教学 第一部分:新授课 一、J avaBean的引入 Jsp+javaBean模式: 二、什么是JavaBean? 1.实质:JavaBean就是一个java类文件。 当jsp编程中多次重复使用某段代码时(eg.连接数据库)就将该代码封装成一个类文件,以公共的java文件的形式存储,以便于编程时调用。JavaBean就是一个处理业务逻辑的类文件。 2.优点: 可以使jsp网页结构清晰“业务逻辑层”和“显示层”分离; 便于维护和程序扩展; 节约了开发周期,避免了重复代码。 三、J avaBean的编写和保存 1.编写规范: Javabean是一个public类; Javabean类是一个具有无参的构造方法,在使用时,实例化javabean类时调用; Javabean内的属性(变量)都为私有的,这些属性只能通过javabean内的方法访问或改变,以保证数据的完整性和封装性; 设置和获取属性(变量)值时使用set***和get***方法,传参。 例1:编写bean,JSP页面提供半径,调用bean计算圆面积和周长。//Circle.java,testCircle.jsp 2.保存:

第七章 JavaBean技术

纯JSP开发方式 JSP+JavaBean开发方式

JavaBean : 支持组件的功能。Java中的组件叫JavaBean。Java(咖啡)Bean(豆)。狭义的JavaBean是具有一个界面形式的体现;广义的JavaBean是普通的Java类。满足两点要求:(1)属性名第一个字母都是小写的,private的;(2)一般具有getters和setters 方法。 原因就是符合面向对象的特性,所以属性是私有的,别人不能访问,从而隐藏细节。Getters是读取属性的值,setters是修改属性的值。如果属性只能读不能改,那么只写getters方法即可。如果属性只能改不能读,那么只写setters方法即可。 一般web中使用的JavaBean不具有图形界面的表现。一般是用来实现某一业务逻辑或者取得特定结果。 【例7.1】封装邮箱地址的JavaBean 【Email.java】 package com.lyq.bean; import java.io.Serializable; public class Email implements Serializable { // serialVersionUID 值 private static final long serialVersionUID = 1L; // Email地址 private String mailAdd; // 是否是一个标准的Email地址

private boolean eamil; /** * 默认无参的构造方法 */ public Email() { } /** * 构造方法 * @param mailAdd Email地址 */ public Email(String mailAdd) { this.mailAdd = mailAdd; } /** * 是否是一个标准的Email地址 * @return布尔值 */ public boolean isEamil() { // 正则表达式,定义邮箱格式 String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; // matches()方法可判断字符串是否与正则表达式匹配 if (mailAdd.matches(regex)) { // eamil为真 eamil = true; } // 返回eamil return eamil; } public String getMailAdd() { return mailAdd; } public void setMailAdd(String mailAdd) { this.mailAdd = mailAdd; } } 【index.jsp】 <%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

javabean属性

JavaBean的属性 JavaBean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量。在JavaBean设计中,按照属性的不同作用又细分为四类:Simple, Index, Bound与Constrained属性。 3.1.1 Simple属性 一个简单属性表示一个伴随有一对get/set方法(C语言的过程或函数在Java程序中称为"方法")的变量。属性名与和该属性相关的get/set方法名对应。例如:如果有setX和getX方法,则暗指有一个名为"X"的属性。如果有一个方法名为isX,则通常暗指"X"是一个布尔属性(即X的值为true或false)。例如在下面这个程序中: public class alden1 extends Canvas { string ourString= "Hello"; //属性名为ourString,类型为字符串 public alden1(){ //alden1()是alden1的构造函数,与C++中构造函数的意义相同setBackground(Color.red); setForeground(Color.blue); } /* "set"属性*/ public void setString(String newString) { ourString=newString; } /* "get"属性 */ public String getString() { return ourString; } } 3.1.2 Indexed属性 一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。例: public class alden2 extends Canvas { int[] dataSet={1,2,3,4,5,6}; // dataSet是一个indexed属性 public alden2() { setBackground(Color.red); setForeground(Color.blue); } /* 设置整个数组*/ public void setDataSet(int[] x){

JAVABEAN是什么和总结JAVABEAN的两种使用方式

JAVABEAN是什么和总结JAVABEAN的两种使用方式 标签:javabean 2015-02-07 00:14 7761人阅读评论(0) 收藏举报 分类: Java(9) 原文:https://www.doczj.com/doc/4711733854.html,/flysky19/articles/88180.html 一、 javabean 是什么? Javabean 就是一个类,这个类就定义一系 列 get 和 set 方法。 So simple ! Javabean 就是为了和 jsp 页面传数据化简交互过程而产生的。 自己的理解: 使用 javabean 和不用 javabean 的区别: 一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使 用 HttpServlet 的 request 对象: 只在 jsp 页面间传递获取数据: String name=req.getParameter(“name”); 显示数据: out.println(name); 存数据入 DB :在 jsp 中直接嵌入 java 代码,用 insert 语句存入。 感觉就像当年自己毕设做的 asp 代码一样。 .asp 页面中一系列 的 req.getParameter 代码和嵌入一大堆的 sql 语句,代码很乱,很难维护。

而使用 javabean 之后,优势也就是 java 的优势:组件技术,代码重用,易于维护。(在 jsp 页面中数据的显示很清晰。) 具体javabean是什么?有待查资料 解决: 1)https://www.doczj.com/doc/4711733854.html,/article/2004/551.shtml 软件组件就是指可以进行独立分离、易于重复使用的软件部 分。 JavaBean 就是一种基于 Java 平台的软件组件思想。 2 )https://www.doczj.com/doc/4711733854.html,/A200507/2005-07-27/170233.html JavaBean到底是个什么东西 1.JavaBean与EJB (1)JavaBean与EJB规范在以下方面有共同的目标:通过标准的设计模式推广Java程序代码,提升开发过程和开发工具之间的重复运用性可携性.但是这两种规格的原始问题却是为了解决不同的问题. 定义于JavaBean组件模型中的标准规范,被设计来产生可重复运用的组件,而这些组件通常被用于IDE开发工具,而且通常是可视化组件,当然并不一定是可视化组件. (2)EJB规范所定义的组件模弄,刚是用来开发服务端的Java程序,由于EJB可能执行在不同的服务器平台上,包括无图形的大型主机上,所以EJB无法使用类似AWT或SWING之类的图形化程序库. 2.JavaBean与类库的区别: (1)并不是所有有用的模块都必须转化成Bean.Bean主要是能被用来可

JavaBean实例代码

ID Name Salary Department 1001 李刚30000 办公室 1002 平山5000 销售部 1003 李广9000 项目部 package com.rzx.testJavabeans; public class Employee {// javabean,实体类,只有属性和set,get方法 private int id; private String name; private int salary; private String department; public Employee(){ } public Employee(int id, String name, int salary, String department, String str) { super(); this.id = id; https://www.doczj.com/doc/4711733854.html, = name; this.salary = salary; this.department = department; } publicintgetId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { https://www.doczj.com/doc/4711733854.html, = name; } publicintgetSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; }

JavaBean概述

一.JavaBean的基本概念 软件业一直是计算机产业的核心,计算机刚问世的时候,计算机软件基本处于缓慢发展时期,那时候使用的计算机软件语言是与硬件紧密相关的机器语言,随后出现了汇编语言。随着计算机日益介入到人们的生活中间,软件也相应的变得更加复杂。于是以编程人员为中心的高级语言替代了计算机发展初期的低级语言,其中,50年代末和60年代初的FORTRAN语言的出现是一个变革,同时像BASIC和LISP这样的高级语言也相应的产生了,这些语言使得编程人员可以超脱于具体的硬件结构,使用更接近于实际问题领域的术语表达其设计思想。 但是另一方面,这种新出现的自由度使得不断复杂的应用程序需要有更加复杂的软件来实现。软件工业自由度和复杂性的增加,软件开发队伍也不断膨胀,成本也不断提高。软件工业也在不断的寻求成本低廉而又快速可靠的软件开发方法,所以在90年代末期,基于组件的软件开发的思想开始得到了普遍的重视和应用。 软件组件就是指可以进行独立分离、易于重复使用的软件部分。JavaBean 就是一种基于Java平台的软件组件思想。JavaBean也是一种独立于平台和结构的应用程序编程接口(API)。JavaBean保留了其他软件组件的技术精华,并增加了被其他软件组件技术忽略的技术特性,使得它成为完整的软件组件解决方案的基础,并在可移植的Java平台上方便地用于网络世界中。 其实你可以把组件理解成为童年时玩的积木,而把用组件搭起来的软件则可以理解成为你用积木搭的形状各异的作品。这种比喻也许可以让你理解为什么用组件搭建应用程序会比其他方法制作应用程序更加稳定和快速。因为软件的组件是可重用的,所以它肯定是经过了很多应用程序的测

javabean对象自动赋值给另一个javabean对象

javabean对象自动赋值给另一个javabean对象 把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to public static Object convertBean2Bean(Object from, Object to) { try { BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass()); PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor p : ps) { Method getMethod = p.getReadMethod(); Method setMethod = p.getWriteMethod(); if (getMethod != null && setMethod != null) { try { Object result = getMethod.invoke(from); setMethod.invoke(to, result); } catch (Exception e) { // 如果from没有此属性的get方法,跳过 continue; } } } } catch (Exception e) { e.printStackTrace(); } return to; } /** * 不支持to继承(to是其他bean的子类) */ public static Object coverBean2Bean(Object from, Object to) { Class fClass = from.getClass(); Class tClass = to.getClass(); // 拿to所有属性(如果有继承,父类属性拿不到) Field[] cFields = tClass.getDeclaredFields(); try { for (Field field : cFields) { String cKey = field.getName(); // 确定第一个字母大写 cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1);

javaBean规范

JavaBean规范 JavaBean是一种JAVA语言写成的可重用组件(类) 必须遵循一定的规范 (1):类必须用public修饰 (2):必须保证有公共无参数构造器,即使手动提供了带参数的构造器,也得提供无参数构造器. (3):包含了属性的操作手段(给属性赋值,获取属性值) 分类 (1):复杂:UI,比如Button,Panel,Window类 (2):简单:domain,dao,service组件,封装数据库,逻辑运算符 (封装有字段,并提供getter/setter) 成员: (1):方法:Method (2):事件:event (3):属性:property 属性: (1):attribute:表示状态,Java中没有该概念,很多人把字段(Field)称之为属性(attribute),不要把成员变量叫做属性. (2):property:表示状态,但是不是字段,是属性的操作方法(getter /setter)决定的,框架中使用的大多数是属性 我们讲完封装之后,应该把对象中信息隐藏起来(把类中的字段,全部使用private修饰起来,其他类不能直接访问).为了能让外界(其他类)访问到本类中的私有字段成员,我们专门提供getter以及setter方法. 字段:private String name: getter方法:仅仅用于获取某一个字段存储的值. public 数据类型get字段----> //去掉get,把首字母小写,得到name,此时name才是属性. public String getName() { return name;//返回name字段存储的值 } 如果操作的字段是boolean类型的,此时不应该叫做getter方法,而是is方法,把getName编程isName. setter方法:仅仅用于给某一个字段设置需要存储的值 public void setName(String n) { name=n;//把传过来的n参数的值,存储到name字段中. } 每一个字段都得提供一对getter/setter,以后使用Eclipse工具之后,getter/setter都是自动生成的. 在JavaBean中有属性这个概念.只有标准情况下字段名和属性名才相同.

JavaBean的作用

南京信息工程大学实验(实习)报告 实验(实习)名称 JavaBean 的作用实验(实习)日期 12.17 得分指导教师陈遥 系计算机专业软件工程年级 2012 班次 3 姓名卫灵林学号 20122344917 一、实验目的 1、1.理解JavaBean 的作用 2、能够定义JavaBean 3、能在jsp 页面中使用JavaBean 二、实验内容及步骤 1、实现客户在一个登录页面form.jsp(如图4-1)输入登录信息并单击“确定”后跳转到 另一个页面doForm.jsp(如图4-2)输出“用户名”和“口令”信息。 〈JSP页面程序〉 User.java public class User { private String username; private String password; public void setUsername(String username) { https://www.doczj.com/doc/4711733854.html,ername = username; } public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } } form.jsp <%@page language="java"import="java.util.*"pageEncoding="gb2312"%>

用户名:
口令:
doForm.jsp <%@page language="java"import="java.util.*"pageEncoding="gb2312"%>

第五章 使用JavaBean习题

第五章使用JavaBean 一、选择题 1.下面哪一项属于工具Bean的用途() A)完成一定运算和操作,包含一些特定的或通用的方法,进行计算和事务处理。 B)负责数据的存取 C)接受客户端的请求,将处理结果返回客户端 D)在多台机器上跨几个地址空间运行 2.JavaBean可以通过相关jsp动作指令进行调用。下面哪个不是JavaBean可以使用的jsp 动作指令() A) B) C) D) } 3.关于JavaBean,下列的叙述哪一项是不正确的() A)JavaBean的类必须是具体的和公共的,并且具有无参数的构造器 B)JavaBean的类属性是私有的,要通过公共方法进行访问 C)JavaBean和Servlet一样,使用之前必须在项目的中注册 D)JavaBean属性和表单控件名称能很好地耦合,得到表单提交的参数4.JavaBean的属性必须声明为private,方法必须声明为()访问类型。 A)private B)static C)protect D)public 5.JSP页面通过()来识别Bean对象,可以在程序片中通过形式来调用Bean中的set 和get方法。 A)name B)class ~ C)id D)classname 6.JavaBean的作用范围可以是page、request、session和()四个作用范围中的一种。 A)application B)local C)global D)class 7.下列哪个作用范围的bean,请求响应完成则该Bean即被释放,不同客户的Bean互不相同。() A)application B)request C)page D)session 8.下列哪个作用范围的Bean,被Web服务目录下所有用户共享,任何客户对Bean属性的修改都会影响到其他用户。() A)application B)request C)page D)session @ 8.下列哪个作用范围的Bean,当客户离开这个页面时,JSP引擎取消为客户该页面分配的Bean,释放他所占的内存空间。() A)application B)request C)page D)session

Javabean简介

Javabean简介 一、javabean 是什么? Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: JavaBean定义了一组规则 JavaBean就是遵循此规则的平常的Java对象 满足这三个条件: 1.执行java.io.Serializable 接口 2.提供无参数的构造器 3.提供getter 和setter方法访问它的属性. 简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。 JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。 易于维护、使用、编写。 可实现代码的重用性。 可移植性强,但仅限于Java工作平台。 便于传输,不限于本地还是网络。 可以以其他部件的模式进行工作。 对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。

JavaBean组件与EJB(Enterprise JavaBean,企业级JavaBean)组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。 2 使用JavaBean的原因 程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。 JavaBean传统应用于可视化领域,如AWT(窗口工具集)下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet 成为当前开发Web应用的主流模式。 3 JavaBean的开发 在程序设计的过程中,JavaBean不是独立的。为了能够更好地封装事务逻辑、数据库操作而便于实现业务逻辑和前台程序的分离,操作的过程往往是先开发需要的JavaBean,再在适当的时候进行调用。但一个完整有效的JavaBean必然会包含一个属性,伴随若干个get/set(只读/只写)函数的变量来设计和运行的。JavaBean作为一个特殊的类,具有自己独有的特性。应该注意以下3个方面。 JavaBean类必须有一个没有参数的构造函数。 JavaBean类所有的属性最好定义为私有的。 JavaBean类中定义函数setXxx() 和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。 本文作者:zdwzzu

Javabean与DTO的区别

javabean: 在Java程序或JSP程序中,其实有很多的代码段是可以重复使用的,比如对数据库的操作、用户的有效性检查及某些项特定功能的实现等。为了很好的解决这个问题,提高开发效率,Sun公司推出了JavaBean,简言之,JavaBean这是一个实现了某个功能且供重复使用的Java类。 在JSP中使用JavaBean后,可实现HTML与Java代码的分离,使JSP更易于开发和维护。因此JavaBean成了JSP程序员的必备利器之一。 虽然JavaBean是Java类,同时它也具有自己的一些特征: 1、JavaBean是一个public的类 2、JavaBean有一个不带参数的构造方法 3、JavaBean中的属性通过getXXX()和setXXX()进行操作 按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于 javabean是基于java语言的,因此javabean不依赖平台,具有以下特点: 1.可以实现代码的重复利用 2.易编写、易维护、易使用 3.可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。

Javabean,POJO,PO,VO,DTO 比如我们编写一个计算圆面积的java类CircleArea.java 以后需要计算圆面积的地方直接调用就行了。 ----------------- 来自百度对POJO的解释: 简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBean,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 其它的解释: POJO -Plain Old Java Objects ,即"普通的老旧的Java对象". 该名称的创立者之一Matin Flower是这样解释的:"对于人们经常忘记常规的Java对象,我的总结是它们没有一个好名字- 因此在准备一次演讲时,Rebecca Parsons, Josh Mackenzie 和我给起了名字: POJO。" POJO是不包含业务逻辑的透明组件,就像其命名那样,它的确简单,只用作单纯的DTO(Data Transport Object数据传输对象)或是VO(Value Object值对象).它通常的构成形式为一个包含私有变量作为属性以及访问其属性的getter和setter方法的类,根据需要可以为其

jsp+servlet+javabean 实现的简单网上购物车(附源码)

简单购物车案例(附源码) 下面具体流程,很多功能都还未完善,之后会实现更多功能,敬请期待 使用jsp的MVC模型开发购物车(jsp+servlet+javabean) 必须有三层架构思想:web层负责与用户打交道业务处理层(服务层service)数据访问层(dao) 1.搭建开发环境 1)导入开发包:jdbc驱动(jstl的jar包) 2)创建程序所在的包,如下:

3)在MYSQL下创建库和表字段有:book,name,author,price,description 2.编码 1)开发实体类bean:Book 2) 开发dao (创建工具类) 3) 开发service 4) web层 3.实现效果如下: 1)在浏览器输入:http://localhost:8080/bookstore/后如下图:

2)进入后显示图书列表 3)加入两种书进入购物车后 4)当点击删除后

5)点击清空购物车后

6)结算功能还未实现 4.附源码: //BookDao.java package com.hbsi.dao; import java.util.List; import com.hbsi.domain.Book; public interface BookDao { //获取所有的书 public List getAll(); //根据id获取书 public Book find(String id); } //BookDaoImpl.java package com.hbsi.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.hbsi.domain.Book; import com.hbsi.utils.DBManager; public class BookDaoImpl implements BookDao{ @Override public Book find(String id) { Connection conn = null; PreparedStatement pt = null; ResultSet rs = null; try { conn = DBManager.getConnection(); String sql = "select * from book where id=?"; pt = conn.prepareStatement(sql);

相关主题
文本预览
相关文档 最新文档