javabean知识

介绍

  最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 BeanEJB)。

JavaBean Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。

Enterprise Bean JavaBean 不同

  JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象.

  JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。

  用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBeanapplet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

  JavaBeanSun微系统的一个面向对象的编程接口,它可以让你建可重用应用程序或能在网络中任何主流操作系统平台上配置的程序块,称作组件。像Java applet一样,JavaBeans组件(“Beans”)能够给予万维网页面交互的能力,例如:计算感兴趣的比率或是根据用户或浏览器的特性改变页面内容。

  从用户的观点来看,一个组件可以是一个与你交互的按钮或是一个当你按下按钮它便开始的小计算程序。从一个开发者的观点来看,那个按钮组件和计算器组件是分别被创建的,并且他们可以一起使用或是在不同的应用程序或情况下和不同的组件产生不同的组合来使用。

  当组件或Beans在使用过程中,Bean的性质(比如,一个窗口的背景色)对于其他Bean来说是可见的,并且,之前没碰到过的Bean也可以动态地获悉彼此的特性并从而进行交互。 

  Bean是随SunBean开发包(BDK)开发出来的,并且能在任何主流操作系统平台的许多应用程序环境(人们所说的容器container)中运行,包括浏览器,文字处理软件,以及一些其他应用。 

  要想用JavaBeans建一个组件,你必须用SunJava编程语言来写程序,并且在程序中包括描述组件特性的JavaBeans语句,这些组件特性例如:用户接口的特性,以及触发一个bean和在同一个容器中或网络其他地方的其他的bean交流的事件。

  JavaBeansJava应用程序提供了OpenDocActiveX接口已提供的这种复合文档的能力。

JavaBean的任务

  “Write once, run anywhere, reuse everywhere”,即一次性编写,任何地方执行,任何地方重用。这个任何实际上就是要解决困扰软件工业的日益增加的复杂性,提供一个简单的、紧凑的和优秀的问题解决方案。

  1. 一个开发良好的软件组件应该是一次性地编写,而不需要再重新编写代码以增强或完善功能。因此,JavaBean应该提供一个实际的方法来增强现有代码的利用率,而不再需要在原有代码上重新进行编程。除了在节约开发资源方面的意义外,一次性地编写JavaBean组件也可以在版本控制方面起到非常好的作用。开发者可以不断地对组件进行改进,而不必从头开始编写代码。这样就可以在原有基础上不断提高组件功能,而不会犯相同的错误。

  2. JavaBean组件在任意地方运行是指组件可以在任何环境和平台上使用,这可以满足各种交互式平台的需求。由于JavaBean是基于Java的,所以它可以很容易地得到交互式平台的支持。JavaBean组件在任意地方执行不仅是指组件可以在不同的操作平台上运行,还包括在分布式网络环境中运行。

  3.JavaBean组件在任意地方的重用说的是它能够在包括应用程序、其他组件、文档、Web站点和应用程序构造器工具的多种方案中再利用。这也许是JavaBean组件的最为重要的任务了,因为它正是JavaBean组件区别于Java程序的特点之一。Java程序的任务就是JavaBean组件所具有的前两个任务,而这第3个任务却是JavaBean组件独有的。

JavaBean是可复用的平台独立的软件组件

  开发者可以在软件构造器工具中其直接进行可视化操作。

  软件构造器工具可以是Web页面构造器、可视化应用程序构造器、GUI设计构造器或服务器应用程序构造器。有时,构造器工具也可以是一个包含子一些bean的复合文档的文档编辑器。

编辑本段

JavaBean可以是简单的GUI要素

  如按钮或滚动条;也可以是复杂的可视化软件组件,如数据库视图,有些JavaBean是没有GUI表现形式的,但这些JavaBean仍然可以使用应用程序构造器可视化地进行组合。

  一个JavaBean和一个Javaapplet相似,是一个非常简单的遵循某种严格协议的Java类。每个JavaBean的功能都可能不一样,但它们都必须支持以下特征。一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component,这样它们才能添加到可视化容器中去,非可视化bean则不需要继承这个类。有许多bean,无论是在应用程序构造器工具中,还是在最后创建好的应用程序中,都具有很强的可视化特征,但这并非每个bean必须的特征。

编辑本段

使用Java编程

  在使用Java编程时,并不是所有软件模块都需要转换成beanBean比较适合于那些具有可视化操作和定制特性的软件组件。从基本上说,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。

  通过将系统看成使用黑盒子关联起来的通讯网络,我们可以忽略黑盒子内部的系统细节,从而有效地控制系统的整体性能。作为一个黑盒子的模型,JavaBean3个接口面,可以独立进行开发。

编辑本段

特点

  1. JavaBean可以调用的方法。

  2. JavaBean提供的可读写的属性。

  3. JavaBean向外部发送的或从外部接收的事件。

编辑本段

JavaBean设计注意事项

  1.不要试图在JavaBean返回的HTML中放置任何字体尺寸。

  并不是所有的浏览器都相同。很多浏览器无法处理完整的字体尺寸。

  2.不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML

  向页面直接输出脚本或者DHTML相当于自我毁灭,因为某些浏览器版本在处理不正确的脚本时会崩溃(非常少但是有)。如果用户的JavaBean在运行时是动态的推出复杂的HTML语言,用户将陷入调试的噩梦。另外,复杂的HTML将限制JavaBean的寿命和灵活性。

  3.不要提供任何的选择。

<think>好的,我需要为用户生成一个关于JavaBean知识点的思维导图。首先,我得回顾一下JavaBean的基本概念和相关内容。根据用户提供的引用,特别是引用[3]中的内部类示例,可能用户对JavaBean的结构和规范有所关注。另外,用户之前询问过JSP隐含变量的思维导图,因此可能需要保持结构的一致性,方便用户对比学习。 首先,JavaBean的核心是遵循特定规范的Java类,通常用于封装数据。需要包括属性、方法、事件等部分。属性需要私有化,并通过公共的getter和setter方法访问,这是JavaBean的重要特性。此外,用户可能还关心JavaBean在MVC模式中的应用,比如在Spring中作为模型层组件,或者与JSP结合使用,如通过useBean标签访问。 然后,考虑到引用[1]提到了Spring MVC的DispatcherServlet和上下文加载,可能需要强调JavaBean在Spring框架中的角色,比如依赖注入、配置管理。不过用户的需求是JavaBean本身的知识点,所以这部分可能作为应用场景来提及,但不应喧宾夺主。 引用[3]中的内部类示例,虽然内部类本身不是JavaBean的核心内容,但JavaBean可能需要遵循的规范,比如序列化、无参构造器等,这些需要明确列出。此外,JavaBean的事件处理机制虽然现在使用较少,但作为知识点还是需要涵盖。 接下来,需要组织思维导图的层次结构。可能的分支包括定义与规范、核心特性、应用场景、相关技术集成(如JSP、Spring)、开发工具支持等。每个分支下再细分具体内容,比如核心特性中包含属性封装、方法规范、事件机制等。 需要注意用户可能混淆JavaBean与普通POJO的区别,因此在思维导图中应明确两者的差异,例如JavaBean需要实现Serializable接口,提供默认构造器等。同时,用户可能对如何在JSP中使用JavaBean感兴趣,比如<jsp:useBean>标签,这需要包含在应用场景中。 最后,检查是否有遗漏的重要点,比如JavaBean的命名约定(属性名与getter/setter方法对应)、使用场景中的框架整合(如Hibernate、Spring),以及可能的设计模式应用(如观察者模式用于事件处理)。确保思维导图结构清晰,覆盖主要知识点,同时不过于冗杂。</think>### **JavaBean知识点思维导图** ``` JavaBean规范与核心特性 ├─ **定义与目的** │ ├─ 可重用组件(数据封装与标准化操作) │ └─ 设计目标:实现模块化、可视化操作(如IDE拖拽支持) ├─ **核心规范** │ ├─ **属性定义** │ │ └─ 私有字段 + 公共访问方法(getXxx()/setXxx()) │ │ └─ 示例: │ │ ```java │ │ private String name; │ │ public String getName() { return name; } │ │ public void setName(String name) { this.name = name; } │ │ ``` │ ├─ **方法要求** │ │ └─ 必须包含无参构造函数(反射依赖) │ │ └─ 支持事件监听(add/removeXXXListener()) │ ├─ **序列化支持** │ │ └─ 实现`Serializable`接口(跨网络或持久化存储)[^1] ├─ **应用场景** │ ├─ **JSP集成** │ │ └─ 通过`<jsp:useBean>`标签直接操作 │ │ └─ 示例: │ │ ```jsp │ │ <jsp:useBean id="user" class="com.example.User" scope="session"/> │ │ <jsp:setProperty name="user" property="name" value="Alice"/> │ │ ``` │ ├─ **框架支持** │ │ ├─ Spring:依赖注入(@Component/@Autowired) │ │ └─ Hibernate:ORM映射(实体类与数据库表关联)[^4] ├─ **与POJO的区别** │ ├─ JavaBean必须满足严格规范(如默认构造器、属性方法) │ └─ POJO仅为普通Java对象(无强制约束) └─ **工具与扩展** ├─ IDE支持(如Eclipse/IntelliJ属性编辑器) └─ 结合反射机制(动态调用getter/setter)[^2] ``` --- ### **关键说明** 1. **属性访问规则** - 布尔类型属性需使用`isXxx()`而非`getXxx()`(如`isActive()`) - 遵循驼峰命名法(如`firstName`对应`getFirstName()`) 2. **事件处理机制** - 基于观察者模式(监听器注册与触发) - 示例: ```java public class ButtonBean { private List<ActionListener> listeners = new ArrayList<>(); public void addActionListener(ActionListener l) { listeners.add(l); } public void click() { listeners.forEach(l -> l.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "click"))); } } ``` 3. **与Spring整合** - 通过`@Component`注解声明Bean,由Spring容器管理生命周期[^1] - 示例: ```java @Component public class UserBean { private String role; // getter/setter省略 } ``` --- ### **代码示例** ```java // 符合JavaBean规范的类 public class Student implements Serializable { private String id; private int age; // 无参构造器(必需) public Student() {} // getter/setter方法 public String getId() { return id; } public void setId(String id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { if (age < 0) throw new IllegalArgumentException(); this.age = age; } } ``` --- ### **相关问题** 1. **如何通过反射动态调用JavaBean的setter方法?若属性名称为`emailAddress`,对应的方法名是什么?** 2. **在Spring框架中,如何配置JavaBean的作用域(如prototype、request)?与JSP的`scope`有何关联?** 3. **为什么JavaBean要求实现`Serializable`接口?在分布式系统中它的作用是什么?** : JavaBean的序列化支持是实现数据持久化和网络传输的基础(如HTTP Session复制)。 : 反射机制通过`java.beans.Introspector`类解析JavaBean属性,动态生成访问方法。 [^4]: MyBatis通过`resultMap`将数据库字段映射到JavaBean属性(基于getter/setter方法)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值