zoukankan      html  css  js  c++  java
  • JavaBean入门笔记

    看了JavaBean感觉很困惑,不知道什么意思,直到查看了资料发现自己理解错误,把JavaBean误当成一种技术,其实Java Bean只是符合一定规范的Java类,便于封装重用。符合这种规范的Java类可以被其他程序员或框架使用。这些规范包括:

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

    我们下面就来看一个JavaBean的例子。 
    一般网页登陆都需要用户名和密码,我们可以把用户名和密码存放在JavaBean中。 

    代码如下: 

    package mytrain.formbean;  
      
    public class userBean {   
          
        private String name;  
        private String password;  
          
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
          
        public String getPassword() {  
            return password;  
        }  
        public void setPassword(String password) {  
            this.password = password;  
        }  
    }  

    有了JavaBean以后,我们怎么在JSP页面中访问它呢? 

    方法有2种: 直接访问JSP标签访问        
    (不过我们推荐通过标签来访问) 
    1)直接访问 

    a) 声明bean 

    在页面顶部导入JavaBean类: <%@ page import="mytrain.formbean.userBean" %> 
    在JSP段实例化类: <% userBean user = new userBean(); %> 

    b) 访问bean 
    <% user.setXXX(aa); %> 
    <%=user.getXXX();%> 

    2)标签访问 
    (推荐) 

    a) 声明bean 


    使用userBean标签: 
    <jsp:useBean id="user" class="mytrain.formbean.userBean"/> 


    b) 访问bean

    通过setProperty标签来设置: 
    <jsp:setProperty name="user"  property="name" param="mUserName"/> 
    通过getProperty标签来取得: 
    <jsp:getProperty name="user" property="name"/> 

    完整的代码:

    标签访问法:

    Html代码
    <%@ page language="java" pageEncoding="GBK"%>  
      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>表单Bean例子2</title>  
        <link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />  
      </head>  
        
      <body>  
      
      <form action="" method="post">  
      <table>  
      <tr>  
      <td>  
        <span class="blue10">用户名:</span>  
      </td>  
      <td>  
        <input type="text" name="mUserName" size="20"><br>  
      </td>  
      </tr>  
      <tr>  
      <td>  
        <span class="blue10">密  码:</span>  
      </td>  
      <td>  
        <input type="password" name="mPassword" size="20"><br>  
      </td>  
      </tr>  
      <tr>  
      <td>  
      </td>  
      <td>  
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
        <input type=submit value="submit"/>  
      </td>  
      </tr>  
      </table>  
      </form>  
      
      <jsp:useBean id="user" class="mytrain.formbean.userBean"/>  
      <jsp:setProperty name="user"  property="name" param="mUserName"/>  
      <jsp:setProperty name="user"  property="password" param="mPassword"/>  
        
      <hr/>  
        
      用户名:<jsp:getProperty name="user" property="name"/>  
      <br>  
      密  码:<jsp:getProperty name="user" property="password"/>  
        
      </body>  
    </html>  

    直接访问法: 

    Html代码
    <%@ page language="java" pageEncoding="GBK"%>  
    <%@ page import="mytrain.formbean.userBean" %>  
      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>表单Bean例子3</title>  
        <link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />  
      </head>  
        
      <body>  
        
      <form action="" method="post">  
        
      <table>  
      <tr>  
      <td>  
        <span class="blue10">用户名:</span>  
      </td>  
      <td>  
        <input type="text" name="mUserName" size="20"><br>  
      </td>  
      </tr>  
      <tr>  
      <td>  
        <span class="blue10">密  码:</span>  
      </td>  
      <td>  
        <input type="password" name="mPassword" size="20"><br>  
      </td>  
      </tr>  
      <tr>  
      <td>  
      </td>  
      <td>  
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
        <input type=submit value="submit"/>  
      </td>  
      </tr>  
      </table>  
      </form>  
        
        
      <%   
        userBean user = new userBean();  
        user.setName(request.getParameter("mUserName"));  
        user.setPassword(request.getParameter("mPassword"));  
      %>  
        
        
      <hr/>  
        
      用户名:<%=user.getName()%>  
      <br>  
      密  码:<%=user.getPassword()%>  
        
      </body>  
    </html>  
     
    Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。
    举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:
    public final class JavaIntList {
      static class Node {
        public Node next;
        public int value;
      }
      public Node head;
      public int size;
    }

    上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。用法如下:

    JavaIntList myList = new JavaIntList();
    System.out.println(myList.size);
    JavaIntList的作者很满意,于是开源了java-int-list库的1.0版。文件名是java-int-list_1.0.jar。发布后,吸引了许多用户来使用java-int-list_1.0.jar。
    有一天,作者决定要节省内存,不要缓存size变量了,把代码改成这样:
    public final class JavaIntList {
      static final class Node {
        public Node next;
        public int value;
      }
      public Node head;
      public int getSize() {
        Node n = head;
        int i = 0;
        while (n != null) {
          n = n.next;
          i++;
        }
        return i;
      }
    }
    然后发布了2.0版:java-int-list_2.0.jar。发布后,原有java-int-list_1.0.jar的用户纷纷升级版本到2.0。这些用户一升级,就发现自己的程序全部坏掉了,说是找不到什么size变量。于是这些用户就把作者暴打一顿,再也不敢用java-int-list库了。
    这个故事告诉我们,如果不想被暴打致死,你就必须保持向后兼容性。太阳公司在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:
    private int size;
    public int getSize() { return size; }

    让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。

  • 相关阅读:
    软件质量的“奥秘”(一)——虚伪的质量
    IT项目管理中的假设约束依赖和承诺
    [转载]IT知识体系结构图
    如何看待项目开发过程中基于度量结果的绩效考评
    我常用的一些ASP自定义函数
    女生永远也不知道男生为什么***
    系统分析员、系统架构师、项目经理的区别
    软件工程知识体系全景图
    my music / NightWish / Groove Coverage / DJ
    qiushibaike.com
  • 原文地址:https://www.cnblogs.com/sjjsh/p/5266437.html
Copyright © 2011-2022 走看看