javabean_javabeans - CSDN
javabean 订阅
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。 展开全文
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
信息
外文名
Javabean
类    别
Java组件
中文名
Javabean
模    型
软件组件模型
JavaBean概述
JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些JavaBean就好比组成这辆汽车的不同零件。对软件开发人员来说,JavaBean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。JavaBean的种类按照功能可以划分为可视化和不可视化两类。可视化的JavaBean就是拥有GUI图形用户界面的,对最终用户是可见的。不可视化的JavaBean不要求继承,它更多的被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序的分离,提高了代码的可读性和易维护性,使系统更健壮和灵活。随着JSP的发展,JavaBean更多的应用在非可视化领域,并且在服务器端应用方面表现出了越来越强的生命力。 [1] 
收起全文
精华内容
参与话题
  • JavaBean简介及使用

    万次阅读 多人点赞 2012-07-23 11:15:44
    一、JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点: 1.可将HTML和Java代码分离,...

    一、JavaBean简介

    JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:

    1.可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。

    2.可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。

    二、JavaBean开发要求

    1.JavaBean本身就是一个类,属于Java的面向对象编程。

    2.在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:

    (1)所有的类必须放在一个包中,在WEB中没有包的是不存在的;

    (2)所有的类必须声明为public class,这样才能够被外部所访问;

    (3)类中所有的属性都必须封装,即:使用private声明;

    (4)封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;

    (5)一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。

    第一个简单JavaBean

    package blog.csdn.joywy;
    public class SimpleBean{
    	private String name;
    	private int age;
    	public void setName(String name){
    		this.name = name;
    	}
    	public void setAge(int age){
    		this.age = age;
    	}
    	public String getName(){
    		return this.name;
    	}
    	public int getAge(){
    		return this.age;
    	}
    }

    如果在一个类中只包含属性、setter、getter方法,那么这种类就成为简单JavaBean。

    对于简单的JavaBean也有几个名词:

    (1)VO:与简单Java对象对应,专门用于传递值的操作上

    (2)POJO:简单Java对象

    (3)TO:传输对象,进行远程传输时,对象所在的类必须实现java.io.Serializable接口。

    三、WEB开发的标准目录结构

    Web项目中各个目录的作用:

    No.

    目录或文件名称

    作用

    1

    WEB ROOT

    Web的根目录,一般虚拟目录直接指向此文件夹,此文件夹下必然直接包含WEB-INF

    2

    WEB-INF

    Web目录中最安全的文件夹,保存各种类、第三方jar包、配置文件

    3

    Web.xml

    Web的部署描述符

    4

    classes

    保存所有的JavaBean,如果不存在,可以手工创建

    5

    lib

    保存所有的第三方jar文件

    6

    tags

    保存所有的标签文件

    7

    jsp

    存放*.jsp文件,一般根据功能再建立子文件夹

    8

    js

    存放所有需要的*.js文件

    9

    css

    样式表文件的保存路径

    10

    images

    存放所有的图片,如*.gif*.jpg文件

    注:

    1.打包编译:编译时直接使用javac -d . SimpleBean.java命令根据package的定义打包编译。

    2.Tomcat中classpath的配置:

    所有的class要进行访问时都必须在classpath中进行配置,在Tomcat中依然可以使用,在Web开发中,Tomcat安装目录的lib文件夹、WEB-INF\classes和WEB-INF\lib文件夹实际上都表示了classpath,所以直接将类或jar包复制到这些文件夹中就可以直接使用了。

    <%@ page contentType="text/html" pageEncoding="GBK"%>
    <%@ page import="blog.csdn.joywy.*"%>    <!-- 导入blog.csdn.joywy包 -->
    <html>
    <head><title>欢迎来到望星空</title></head>
    <body>
    <%
    	SimpleBean simple = new SimpleBean();    //声明并实例化SimpleBean对象
    	simple.setName("Joywy");                 //设置name属性
    	simple.setAge(23);                       //设置age属性
    %>
    <h3>姓名:<%=simple.getName()%></h3>            <!-- 输出name属性的内容 -->
    <h3>年龄:<%=simple.getAge()%></h3>             <!-- 输出age属性的内容 -->
    </body>
    </html>
    四、使用<jsp:useBean>指令

    除了使用import的语句之外,也可以使用JSP中提供的:<jsp:useBean>指令完成操作,指令的操作语法如下所示:

    1.<jsp:useBean id="实例化对象名称" scope=“保存范围” class=“包.类名称“/>

    2.主要属性:

    (1)id:表示实例化对象的名称

    (2)scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、application

    (3)class:对象所对应的包.类名称
    样例:

    <%@ page contentType="text/html" pageEncoding="GBK"%>
    <jsp:useBean id="simple" scope="page" class="blog.csdn.joywy.SimpleBean"/>
    <html>
    <head><title>欢迎来到望星空</title></head>
    <body>
    <%
    	simple.setName("Joywy");
    	simple.setAge(23);
    %>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
    </body>
    </html>
    在使用<jsp:useBean/>指令时,实际上会默认调用SimpleBean类中的无参构造方法进行对象实例化,当修改SimpleBean.java文件后,如果要想让其起作用,则需要重新启动服务器,我们可以通过在Tomcat中直接配置自动加载的操作,这样即使不重新启动服务器,JavaBean修改后也可以被立即加载进来。重新加载的配置如下:在Tomcat安装目录下conf/server.xml文件中进行配置

    <Context path="/joywy" docBase="D:\myweb" reloadable="true"/>
    以后Tomcat会自动进行检测,如果发现JavaBean修改之后会自动进行重新加载。

    注意:

    1.直接在配置虚拟目录的位置上增加一个reloadable属性即可,但是这种情况只适合于开发,因为使用reloadable自动加载后,服务器将始终处于监视状态,一旦发现类修改后就要立刻重新加载,运行性能是比较低的,所以,当项目真正发布运行时一定要将reloadable的内容设置成false,以提升入屋企运行性能。

    2.还要记住,当Tomcat重新加载了新的内容后,所有的操作都将初始化,所有设置过的session属性都将消失。

    四、<jsp:useBean>指令内部实现原理

    依靠的是反射机制完成的,在使用<jsp:useBean>指令时需要定义对象所在的“包.类“名称,而且又要求类中存在无参构造方法,这就是反射操作的前提条件,所以<jsp:useBean>的语法实际上属于反射机制的操作实现。

    展开全文
  • 初学者的疑惑,到底什么是javaBean

    万次阅读 多人点赞 2018-11-08 20:09:55
    JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。...

    JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
    —以上源自维基百科

    一开始,我们封装一个对象的时候,以汽车对象为例子:

    
    public class car {
    	/**
    	 * 这是一个五座小汽车
    	 */
    	
    	private int 车轮 = 4 ;
    	private int 方向盘 = 1;
    	private int 座位 = 5;
    	
    	
    	public int get车轮() {
    		return 车轮;
    	}
    	public void set车轮(int 车轮) {
    		this.车轮 = 车轮;
    	}
    	public int get方向盘() {
    		return 方向盘;
    	}
    	public void set方向盘(int 方向盘) {
    		this.方向盘 = 方向盘;
    	}
    	public int get座位() {
    		return 座位;
    	}
    	public void set座位(int 座位) {
    		this.座位 = 座位;
    	}
    	
    }
    

    一开始学习的java的时候,我们把上述代码称之为一个对象类,而到了后期,我们称之为一个javaBean。因为后期java为了便于操作数据,通常是使用对象为容器,把需要操作的数据赋值给对象,而为了便于赋值,那我们必须要有这种get/set方法。

    总结如下:

    1、所有属性为private
    2、提供默认构造方法
    3、提供getter和setter
    4、实现serializable接口

    以上内容写于2018年11月8日20:07:41,目前的理解是数据的容器,若以后再有所感受,会继续更新本帖。各位朋友如果有更好的理解欢迎留言分享,感谢。

    我的博客地址:山岚-java

    展开全文
  • Java Bean详解

    万次阅读 多人点赞 2018-11-14 21:46:55
    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,...

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

    功能特点

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

           JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

           JavaBean是可复用的平台独立的软件组件,开发者可以在软件构造器工具中对其直接进行可视化操作。

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

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

           一个JavaBean和一个JavaApplet相似,是一个非常简单的遵循某种严格协议的Java类。每个JavaBean的功能都可能不一样,但它们都必须支持以下特征。

           一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component,这样它们才能添加到可视化容器中去,非可视化bean则不需要继承这个类。有许多bean,无论是在应用程序构造器工具中,还是在最后创建好的应用程序中,都具有很强的可视化特征,但这并非每个bean必须的特征。

           在使用Java编程时,并不是所有软件模块都需要转换成bean。Bean比较适合于那些具有可视化操作和定制特性的软件组件

           从基本上说,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。

           通过将系统看成使用黑盒子关联起来的通讯网络,我们可以忽略黑盒子内部的系统细节,从而有效地控制系统的整体性能。

    作为一个黑盒子的模型,JavaBean有3个接口面,可以独立进行开发。

    1. JavaBean可以调用的方法

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

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

    组成

    一个JavaBean由3部分组成:
      
      (1) 属性(properties)
      JavaBean提供了高层次的属性概念,属性在JavaBean中不只是传统的面向对象的概念里的属性,它同时还得到了属性读取和属性写入的API的支持。属性值可以通过调用适当的bean方法进行。比如,可能bean有一个名字属性,这个属性的值可能需要调用String getName()方法读取,而写入属性值可能要需要调用void setName(String str)的方法。
      每个JavaBean属性通常都应该遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值,对bean进行操作。JavaBean还可以对属性值的改变作出及时的反应。比如一个显示当前时间的JavaBean,如果改变时钟的时区属性,则时钟会立即重画,显示当前指定时区的时间。
      (2) 方法(method)
      JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用。默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集。
      由于JavaBean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段(没有public字段)。这样,方法调用是接触Bean的唯一途径。
      但是和普通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操作和使用Bean的主要途径。公开Bean方法在Bean操作中降为辅助地位,因为两个高级Bean特性--属性和事件是与Bean交互作用的更好方式。
      因此Bean可以提供要让客户使用的public方法,但应当认识到,Bean设计人员希望看到绝大部分Bean的功能反映在属性和事件中,而不是在人工调用和各个方法中。
      (3) 事件(event)
      Bean与其他软件组件交流信息的主要方式是发送和接受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引脚:工程师将引脚连接在一起组成系统,让组件进行通讯。有些引脚用于输入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。
      事件为JavaBean组件提供了一种发送通知给其他组件的方法。在AWT事件模型中,一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。
      由此可见,JavaBean确实也是普通的Java对象,只不过它遵循了一些特别的约定而已。

    范围

           JavaBean 的范围 Scope 是一个具有生命时间的变量。JavaBean的范围在<jsp:useBean scope=”….>标志中右边进行表示。将产生一个JavaBean的快捷参考。

    说明:jsp服务器引擎将剥离<jsp。。。。标记。并且在最终用户的浏览器上无法显示实际代码。

    存在下面四种范围: 页面page、 请求request、 对话session、 应用application。

    对话范围

    对话范围的JavaBean 主要应用于跨多个页面和时间段: 例如填充 用户信息。 添加信息并且接受回馈,保存用户最.近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。

    请求范围

    页面和请求范围的JavaBean有时类似表单的bean , 这是因为 他们大都用于处理表单。表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HTTP/POST或者GET请求。另外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。

    应用范围

    应用范围通常应用于服务器的部件,例如 JDBC连接池、应用监视、用户计数和其他参与用户行为的类。

    在Bean中限制HTML的产生:

    理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。

    这里有一些非常重要的事情:

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

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

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

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

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

    如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。

    按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:

    1. 可以实现代码的重复利用

    2. 易编写、易维护、易使用

    3. 可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。

    编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:

    1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:

    getXxx(),用来获取属性xxx。

    setXxx(),用来修改属性xxx.。

    2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get"。

    3. 类中访问属性的方法都必须是public的,一般属性是private的。

    4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。

    任务

           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的一些具体的主要设计目标:

    1.紧凑而方便的创建和使用

    JavaBean紧凑性的需求是基于JavaBean组件常常用于分布式计算环境中,这使得JavaBean组件常常需要在有限的带宽连接环境下进行传输。显然,为了适应传送的效率和速度,JavaBean组件必须是越紧凑越好。另外,为了更好地创建和使用组件,就应该使其越简单越好。通常为了提高组件的简易性和紧凑性,设计过程需要投入相对较大的功夫。

    现已有的组件软件技术通常是使用复杂的API,这常常搞得开发者在创建组件时晕头转向。因此,JavaBean组件必须不仅容易使用,而且必须便于开发。这对于组件开发者而言是至关重要的,因为这可以使得开发者不必花大量功夫在使用API进行程序设计上,从而更好地对组件进行润饰,提高组件的可观赏性。

    JavaBean组件大部分是基于已有的传统Java编程的类结构上的,这对于那些已经可以熟练地使用Java语言的开发者非常有利。而且这可以使得JavaBean组件更加紧凑,因为Java语言在编程上吸收了以前的编程语言中的大量优点,已经使开发出来的程序变得相当有效率。

    2.完全的可移植性

    JavaBean API与操作基础的独立于平台的Java系统相结合,提供了独立于平台的组件解决方案。因此,组件开发者就可以不必再为带有Java applet平台特有的类库而担心了。最终的结果都将是计算机界共享可重复使用的组件,并在任何支持Java的系统中无需修改地执行。

    3.继承Java的强大功能

    现有的Java结构已经提供了多种易于应用于组件的功能。其中一个比较重要的是Java本身的内置类发现功能,它可以使得对象在运行时彼此动态地交互作用,这样对象就可以从开发系统或其开发历史中独立出来。

    对于JavaBean而言,由于它是基于Java语言的,所以它就自然地继承了这个对于组件技术而言非常重要的功能,而不再需要任何额外开销来支持它。

    JavaBean继承在现有Java功能中还有一个重要的方面,就是持久性,它保存对象并获得对象的内部状态。通过Java提供的序列化(serialization)机制,持久性可以由JavaBean自动进行处理。当然,在需要的时候,开发者也可以自己建立定制的持久性方案。

    4.应用程序构造器支持

    JavaBean的另一个设计目标是设计环境的问题和开发者如何使用JavaBean创建应用程序。JavaBean体系结构支持指定设计环境属性和编辑机制以便于JavaBean组件的可视化编辑。这样开发者可以使用可视化应用程序构造器无缝地组装和修改JavaBean组件。就像Windows平台上的可视化开发工具VBX或OCX控件处理组件一样。通过这种方法,组件开发者可以指定在开发环境中使用和操作组件的方法。

    5.分布式计算支持

    支持分布式计算虽然不是JavaBean体系结构中的核心元素,但也是JavaBean中的一个主要问题。

    JavaBean使得开发者可以在任何时候使用分布式计算机制,但不使用分布式计算的核心支持来给自己增加额外负担。这正是出于JavaBean组件的紧凑性考虑的,无疑分布式计算需要大量的额外开销。

    需求

    JavaBean是java类,属于某些特定的译码指导方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。通过这些,JavaBean类可以用于下列方法:

    1. 在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即JavaBean是被编译的,并且无法利用原始的源文件。

    2. 在 Remote Method Invocation(RMI) 的分布式风格中,这项功能听起来并不让人兴奋,但是在未来的包含企业版的JavaBean后,将改变这种情况。

    3. 为了JavaBean的属性值和状态可以保存到磁盘上。

    界限

           虽然JavaBean和Java之间已经有了明确的界限,但在某些方面JavaBean和Java之间仍然存在着非常明显的混淆。Java确实是能够为用户创建可重用的对象,但它却没有管理这些对象相互作用的规则或标准。JavaBean通过指定定义对象之间交互作用的机制,以及大部分对象需要支持的常用行为,如持久性和实际处理等,建立了自己需要的组件模型

           虽然当前的Java组件模型也可以运行得很好,但在传送真正的可重用性和交互操作性上仍然非常有限,Java用户需要做的最多的一件事就是创建applet并使得它们在Web 页面上相互通讯,这并非易事。JavaBean提供了一个框架包,使用这个包进行通讯就容易得多了。

           JavaBean组件能够通过定义好的标准属性改进性能。总体而言,JavaBean充分发展了Java applet的功能,并结合了JavaAWT组件的紧凑性和可重用性。

    三大构件

    Java bean:编程语言java中的术语,行业内通常称为java豆,带点美哩口味,飘零着咖啡的味道,在计算机编程中代表java构件(EJB的构件),通常有Session bean,Entity bean,MessageDriven Bean三大类。

    Session bean:会话构件,是短暂的对象,运行在服务器上,并执行一些应用逻辑处理,它由客户端应用程序建立,其数据需要自己来管理。分为无状态和有状态两种。

    Entity bean:实体构件,是持久对象,可以被其他对象调用。在建立时指定一个唯一标示的标识,并允许客户程序,根据实体bean标识来定位beans实例。多个实体可以并发访问实体bean,事务间的协调由容器来完成。

    MessageDriven Bean:消息构件,是专门用来处理JMS(Java Message System)消息的规范(EIB2.0)。JMS是一种与厂商无关的API,用来访问消息收发系统,并提供了与厂商无关的访问方法,以此来访问消息收发服务。JMS客户机可以用来发送消息而不必等待回应。

    发展

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

    开发环境

    普通JavaBean组件是要分布在各自环境中,所以它们应该能够适应各种环境。虽然我们无法事先预知JavaBean要运行的确切环境,但以下两点是可以确定的:

    1. bean必须能够在一个应用程序构造器工具中运行。

    2. bean必须可以在产生的应用程序的运行环境中使用。

    设计环境

    第一点说明的是bean必须可以在设计环境(design environment)中运行。在设计环境中,bean应该提供设计信息给应用程序构造器工具并允许终端用户制定bean的外观和行为。

    在传统的软件构造活动中,必须通过编译、链接之后才能看到应用程序的最终运行结果;而利用JavaBean设计的软件中,则没有这种明确的界限。使用JavaBean,就可以非常直观地设计应用程序软件,在设计过程中赋予软件主机。而且,这个过程更加容易重复开发,设计思想更加容易变成原型。

    运行环境

    第二点说明的是bean必须可以在运行环境(run-time environment)中使用。在这个环境中,对设计信息和定制的需求并不重要。一个组件的设计环境信息和设计环境中编写的代码通常可能是非常巨大的。

    因此,我们可能需要在bean的设计环境方面和运行环境方面作一个明确的区分,这样,就可能需要在运行环境中不使用bean的任何设计环境代码来配置这个bean。所以,JavaBean就必须分别支持运行环境接口的类库和设计环境接口的类库。

    编程入门

    一般要求

    首先,您必须有一个不带有参数的公用构造器此构造器也应该通过调用各个特性的设置方法来设置特性的默认,例如:

    public Fireworks()
    
    {
    
    setAutoStart(true);
    
    setBackground(Color.black);
    
    setSpeed(10);
    
    setRadius(40);
    
    }

    如果 bean 是一个从 java.awt.Component 类继承而来的可视 bean,您就应该为 bean 定义一个默认的首选大小,例如:

    public Dimension getPreferredSize()
    
    {
    
    return (new Dimension(radius*3, radius*3));
    
    }
    
    public Dimension getMinimumSize()
    
    {
    
    return getPreferredSize();
    
    }

    特性

    对于您需要的每个特性,您应该有一个带有匹配公用 getter 和 setter 方法的专用实例变量,例如:

    private int speed;
    
    public int getSpeed()
    
    {
    
    return speed;
    
    }
    
    public void setSpeed(int s)
    
    {
    
    speed = s;
    
    }

    此 get 和 set 方法必须有与实例变量相同的名称,但是第一个字母要大写并以 get 和 set 开头。

    由于连接而在任何时候更改它们的特性时,确认 Bean 在运行时行为正确也是很重要的。如果特性的更改影响到 Bean 的可视外观,您应该以此特性设置的方法来调用

    repaint();。

    同样,如果特性的更改影响到 bean 的大小和位置,您需要确认获得验证的事物。我们建议编写您自己的 validateAll 方法,如下所示:

    private void validateAll()
    
    {
    
    if (isValid())
    
    {
    
    Component self = this;
    
    self.invalidate();
    
    Component myParent = self.getParent();
    
    if (myParent != null)
    
    {
    
    myParent.invalidate();
    
    self = myParent;
    
    }
    
    self.validate();
    
    }
    
    }

    然后以此特性设置的方法调用

    validateAll();。

    bean 类将无法进行关于调用特性设置方法命令的假设。您应该写 bean 以便可以初始构造它,然后在不引起错误的同时在任何命令中设置其特性。

    操作

    对于每个您需要的操作,您应该有一个公用方法,例如:

    public void start()
    
    {
    
    if(thread==null)
    
    {
    
    thread=new Thread(this);
    
    thread.start();
    
    }
    
    }

    您为操作写的方法应该在无须期待用户创建连接或设置很多特性的情况下独立操作。 例如,如果您写了一个音频 Bean,您希望通过播放操作处理打开声音的所有步骤、完成您需要的所有设置并播放声音。同样,即使声音未播放,停止操作也应起作用。

    事件

    对于您需要的每个事件或事件设置,您应该定义事件和侦听器类。对于此例,查看 FireworksEvent.java 源文件以及 Fireworks.java 文件。此事件类的源应该如同这样:

    import java.awt.*;
    
    import java.util.*;
    
    publicclassFireworksEvent extends EventObject
    
    {
    public static final int EXPLODED = 1;
    int id = 0;
    
    public FireworksEvent(Component source, int id)
    
    {
    super(source);
    id = id;
    }
    
    public int getID()
    
    {
    return id;
    }
    
    }

    您应该为此事件设置中的每个事件定义一个公用静态结束事件标识符,例如在此例子中的 EXPLODED。

    对于侦听器类的源,查看 FireworksListener.java源文件

    import java.util.*;
    
    public interface FireworksListener extends EventListener
    
    {
    
    public abstract void exploded(FireworksEvent e);
    
    }

    您应该为此事件设置中的每个事件定义一个公用抽象方法,例如在此例子中的 exploded。 而且,侦听器类必须扩展 EventListener ,以使 JAR 向导能够找到它。

    然后,如果由 bean 类播送事件,它必须跟踪侦听事件的对象。要这样做,您需要定义侦听器实例变量以及 addListener 和 removeListener 方法。返回 Fireworks.java 源,例如,您将查看到:

    private Vector listeners = new Vector();
    
    public void addFireworksListener(FireworksListener f)
    
    {
    
    listeners.addElement(f);
    
    }
    
    public void removeFireworksListener(FireworksListener f)
    
    {
    
    listeners.removeElement(f);
    
    }

    最后,bean 类需要以正确的次数将事件实际播送到所有的侦听器。要这样做,您需要定义 processEvent 方法并以适当的次数调用它,例如:

    public void processFireworksEvent(FireworksEvent e)
    
    {
    
    for (Enumeration enum = listeners.elements(); enum.hasMoreElements(); )
    
    ((FireworksListener)enum.nextElement()).exploded(e);
    
    }
    
    public void run()
    
    {
    
    processFireworksEvent(new FireworksEvent(this, FireworksEvent.EXPLODED));
    
    }

    注意事项

    实际应用中,在表现对象或者处理前扩展JavaBean的设计非常有用。通常认为如果提供信息,web开发者将在功能上满足用户对JavaBean的需求。例如: HTML中显示敏感的数据时,用户可以屏蔽的条目,如密码、电话号码等。

    良好规划设计的JavaBean是值得信赖的。

    Java 中的 null 不同于SQL中的 null

    看这样一道测试程序

    public class NullTest
    
    {
    
    public static void main(String[] args)
    
    {
    
    int I = 0;
    
    // int I = null;// not a valid initialization;
    
    String str = null;
    
    String strZeroOutValue = "";
    
    StringBuffer sb = new StringBuffer("Null test: String initialized as null =");
    
    sb.append(str);
    
    sb.append(" String representing a Zero Out Value:")
    
    sb.append(strZeroOutValue);
    
    System.out.println(sb.toString());
    
    }
    
    }

    这个程序将产生下面的结果:

    Null test: String initialized as null = null

    n String representing a Zero Out Value:

    在JavaBean中, 我们将 I变量声明为一个 int, 我们必须处理与该变量相关的值,因为I 默认的没有值,int类型无法初始化为 null, 如果int 值没有进行明确的初始化,编译器将提示错误。

    执行 NullTest程序,将验证在文本中空字符串是空值的替代,用于显示 SQL 的插入和更新。如果我们需要删除一些信息,通过删除表单区域的文本,需要将数据库发送长度为0的字符串。

    尽管大多数数据库将空字符串作为空值进行操作,如果我们使用的数据库不支持处理空字符串的话,我们必须写入附加的java代码,来创建自己的SQL插入声明。

    例如:

    if(test.length==0)
    
    {
    
    sb.append("null");
    
    }
    
    else
    
    {
    
    sb.append(test);
    
    }

    区别EJB

    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的例子

    Javabean就是Java类。从表示层的处理来考虑,Javabean就是一个个的service类。
    现在就用一个实际的例子来说明javabean是怎样工作的,建立一个用户注册登陆小模块
    --------------------------------------------------------------------------------------
    /*1,建立一个javabean封装用户的信息(姓名和密码)UserInfo.java,其中的方法有
    setter方法来设置用户的信息,getter方法来获取用户的信息*/
    
    package user;//存放UserInfo.java的包,该包中放在web-inf目录下
    public class UserInfo
    {
    private String password;
    private String name;
    
    //获取信息
    public String getPassword()
    {
    return this.password;
    }
    public String getName()
    {
    return this.name;
    }
    //设置信息
    public void setPassword(String p)
    {
    this.password=p;
    }
    public void setName(String n)
    {
    this.name=name;
    }
    }
    
    --------------------------------------------------------------------------------------------------
    /*2,现在做的事就是建立一个javabean处理数据库操作以及一些简单的逻辑操作UserRegist.java*/
    
    package user;//同理也放在这个包中
    import java.sql.*;
    
    public class UserRegist
    {
    private UserInfo userInfo;//在此javabean中把UserInfo.java这个javabean引进来
    private Connection conn=null;
    
    //连接数据库
    public UserRegist()
    {
    try
    {
    Class.forName("com.mysql.jdbc.Driver");
    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/joke?user=root");
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    
    public void setUserInfo(UserInfo userInfo)
    {
    this.userInfo=userInfo;
    }
    
    
    //进行注册
    public void regist()throws Exception
    {
    String reg="insert into user_Info values(?,?)";
    try
    {
    PreparedStatement pstmt=conn.prepareStatement(reg);
    //create a preparestatement sentence ,then to set their name
    pstmt.setString(1,userInfo.getPassword());
    pstmt.setString(2,userInfo.getName());
    //excute update
    pstmt.executeUpdate();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    throw e;
    }
    }
    }
    
    -----------------------------------------------------------------------------------------------------------------
    /*3,好了,我们的要用到的javbean就建立完了,现在就是做一个简单的表单html页面了,login.html,接受用户输入的信息*/
    
    <form  action="regist.jsp" name="form1">
    
    <table>
    
    <tr>
    
    <td> username:</td>
    
    <td><input name="name"></input></td>
    
    </tr>
    
    <tr>
    
    <td>userpassword:</td>
    
    <td><input  type="password" name="password"></input></td>
    
    </tr>
    
    <tr>
    
    <td><input type="submit" value="go"></td>
    
    <td><input type="reset" value="reset"></td>
    
    <table>
    
    </form>
    
    ----------------------------------------------------
    
    /*4,最后我们做的事就是用一个简单的jsp页面让两个javabean工作起来,regist.jsp*/
    
    
    
    <%@page contentType="text/html;charset=GB2312"%>
    
    //利用此标签来调用UserInfo.java
    
    <jsp:useBean id="userInfo" class="user.UserInfo" scope="page">
    
    //利用此标签来用UserInfo.java接受并保存表单中的信息
    
    <jsp:setProperty name="userInfo" property="*"/>
    
    </jsp:useBean>
    
    //来调用UserRegist.java
    
    <jsp:useBean id="regist" class="user.UserRegist" scope="page"/>
    
    
    
    <%
    
    regist.setUserInfo(userInfo);//调用UserRegist.java中的setUserInfo()方法获取保存在serInfo.java中的信息
    
    regist.regist( );//调用UserRegist.java中的regist( )方法进行注册
    
    out.println("registed ok!");
    
    %>
    
    <br><hr><br>
    
    <a href="login.jsp">back</a>

     

    展开全文
  • javabean总结

    万次阅读 多人点赞 2010-01-07 16:53:00
    一、 javabean 是什么?Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类,就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: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是首字母大写的私有变量名称。



    展开全文
  • 什么是javabean及其用法

    千次阅读 2019-06-17 18:05:30
    一、什么是JavaBean  JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化。 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的...
  • JavaBean

    千次阅读 2019-01-30 11:02:16
    文章目录JavaBean的概念JSP与JavaBean搭配使用的优点JavaBean的特征JSP访问JavaBean的语法导入JavaBean类声明JavaBean对象属性以及用法访问JavaBean属性&lt; jsp:getProperty&gt;&lt; jsp:setProperty&...
  • JAVA中Bean是什么?

    万次阅读 2019-02-18 22:14:25
    javaBean在MVC设计模型中是model,又称模型层,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA语言写成的可重用组件。...
  • JavaBean学习笔记

    2020-10-17 08:33:57
    JavaBean 中文名:实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化 必须有对应的get/set方法 一般用来和数据库的字段做映射 ORM 对象关系映射(英语:Object Relational Mapping,简称ORM,或O...
  • javaBean是什么

    千次阅读 2019-02-19 01:37:42
    javaBean 定义 JavaBean 是一种JAVA语言写成的可重用组件,它是一个类。 为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器. JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,...
  • 一、 javabean 是什么? Javabean 就是一个类,这个类就定义一系列 get 和 set 方法。 So simple ! Javabean 就是为了和 jsp 页面传数据化简交互过程而产生的。 自己的理解: 使用 ...
  • javaBean

    千次阅读 2019-03-28 18:03:17
    起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。随着技术的不断发展与项目的...
  • Javabean

    2011-11-06 10:19:29
    Javabean javabean:它是一个遵循特定写法的java类。   Javabean的特点: 这个java类必须具有一个无参的构造函数。  属性必须私有化。  私有化的属性必须通过public类型的方法暴露给其他程序,并且方法的...
  • javabean

    2012-06-18 14:18:55
    用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为...
  • 前言: 在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。...
  • JAVAbean

    2019-09-25 00:51:16
    JAVAbean 学号:201631062509 姓名:杨菓 1.什么是JAVAbean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式...
1 2 3 4 5 ... 20
收藏数 170,728
精华内容 68,291
关键字:

javabean