zoukankan      html  css  js  c++  java
  • Java Beans

    JavaBeans事实上有三层含义。首先,JavaBeans是一种规范,一种在Java(包括JSP)中使用可重复使用的Java组件的技术规范,也可以说成我们常说的接口。其次,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的 .java文件 ,在绝大多数情况下,这应该是一个public类型的类。最后,当JavaBeans这样的一个Java类在我们的具体的Java程序中被实例之后,这就是我们面向对象的对象,我们有时也会将这样的一个JavaBeans的实例称之为JavaBeans。总之,就是Java中的接口、类和对象。


    从原理上来说,使用JavaBeans不过是使用一种特定的规范在Java程序中引入特定的类。你完全可以不使用JavaBeans而直接在Java程序中对这样的Java类进行说明并进行示例。当然,这无疑会降低你的程序的可读性,而且你将牺牲组件的可重复使用的特性。但是,对于一个简单的应用中的简单程序。你完全可以不必拘泥于使用JavaBeans。即便是对于JSP,你也可以做同样的选择,我们知道,在“”引起的程序段中,我们可以使用任何的纯Java语句,包括对一个新的对象的定义和示例。正如我们前面提到的,使用JavaBeans你可以充分利用组件的可重复使用的特性并增加你的程序的可读性。当你的应用日趋庞大时,你会发现,遵守这样的规范所带来的在开发和维护中的便利,相对于你所受到的约束,你完全值得做这样的交换。


    JavaBeans是Java语言中可以重复使用的软件组件,它们是一种特殊的Java类,将很多的对象封装到了一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。

    优点:
    Bean可以控制它的属性、事件和方法是否暴露给其他程序。
    Bean可以接收来自其他对象的事件,也可以产生事件给其他对象。
    有软件可用来配置Bean。
    Bean的属性可以被序列化,以供日后重用。

    JavaBeans规范,要成为JavaBean类,则必须遵循关于命名、构造器、方法的特定规范。有了这些规范,才能有可以使用、复用、替代和连接JavaBeans的工具。
    规范如下:
    有一个公有的无参构造器。
    属性可以通过get、set、is(可以替代get,用在布尔型属性上)方法或遵循特定命名规范的其他方法访问。
    可序列化。

    (作者注:我在学习过程中看到的例子都没有严格遵循可序列化这个规范,表现在代码上没有实现java.io.Serializable这个接口。JavaBean实质上是一种编程规范,其特点是使用getter获取对象的某个属性,使用setter设置对象的某个属性,在eclipse编写Bean时,只需要写出类中的属性,编译器中的右键菜单->source->generate getters and setters可自动生成相应方法。 )

    以下例子来自维基百科:
    中文版参考这里:http://blog.csdn.net/sushengmiyan/article/details/40345639

    package player;
    
    public class PersonBean implements java.io.Serializable {
    
        /** Properties **/
        private boolean deceased = false;
    
        private List list;
    
        /** Property <code>name</code> (note capitalization) readable/writable. */
        private String name = null;
    
        /** No-arg constructor (takes no arguments). */
        public PersonBean() {
        }
    
        public List getList() {
            return list;
        }
    
        public void setList(final List list) {
            this.list = list;
        }
    
        /**
         * Getter for property <code>name</code>
         */
        public String getName() {
            return name;
        }
    
        /**
         * Setter for property <code>name</code>.
         *
         * @param value
         */
        public void setName(final String value) {
            this.name = value;
        }
    
        /**
         * Getter for property "deceased"
         * Different syntax for a boolean field (is v.s. get)
         */
        public boolean isDeceased() {
            return deceased;
        }
    
        /**
         * Setter for property <code>deceased</code>.
         * @param value
         */
        public void setDeceased(final boolean value) {
            deceased = value;
        }
    }
    TestPersonBean.java:
    import player.PersonBean;
    
    /**
     * Class <code>TestPersonBean</code>.
     */
    public class TestPersonBean {
        /**
         * Tester method <code>main</code> for class <code>PersonBean</code>.
         *
         * @param arguments
         */
        public static void main(final String[] arguments) {
            final PersonBean person = new PersonBean();
    
            person.setName("Bob");
            person.setDeceased(false);
            person.setList(new ArrayList());
    
            // Output: "Bob [alive]"
            System.out.print(person.getName());
            System.out.println(person.isDeceased() ? " [deceased]" : " [alive]");
        }
    }
    Use in a JavaServer Page
    testPersonBean.jsp;
    <% // Use of PersonBean in a JSP. %>
    <jsp:useBean id="person" class="player.PersonBean" scope="page"/>
    <jsp:setProperty name="person" property="*"/>
    
    <html>
        <body>
            Name: <jsp:getProperty name="person" property="name"/><br/>
            Deceased? <jsp:getProperty name="person" property="deceased"/><br/>
            <br/>
            <form name="beanTest" method="POST" action="testPersonBean.jsp">
                Enter a name: <input type="text" name="name" size="50"><br/>
                Choose an option:
                <select name="deceased">
                    <option value="false">Alive</option>
                    <option value="true">Dead</option>
                </select>
                <input type="submit" value="Test the Bean">
            </form>
        </body>
    </html>

    完整参考:
    1. https://en.wikipedia.org/wiki/JavaBeans#JavaBean_conventions 维基百科
    2. https://baike.baidu.com/item/JavaBeans/5155612?fr=aladdin 百度百科

  • 相关阅读:
    UVA11039
    UVA10970大块巧克力
    UVA10970大块巧克力
    UVA10340子序列
    UVA10340子序列
    UVA10382喷水装置
    UVA10382喷水装置
    UVA10020(最小区间覆盖)
    洛谷 P2141 珠心算测验
    UVa 11292 勇者斗恶龙(The Dragon of Loowater)
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842639.html
Copyright © 2011-2022 走看看