Changes between Version 1 and Version 2 of waue/2010/0603


Ignore:
Timestamp:
Jun 3, 2010, 4:21:57 PM (14 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2010/0603

    v1 v2  
    88}}}
    99[[PageOutline]]
     10
     11 = 重點 =
     12 == JSP、Servlet 與 JavaBean 的組合應用 ==
     13 * JavaBeans 只是普通的類別
     14
     15 Servlet 的 Java 類別是繼承自 javax.servlet.HttpServlet,因此具有接收 HTTP request 和送出 HTTP response 等網站應用程式的基本功能,
     16 而 JavaBeans 則只是單純的類別,它可以繼承自任何類別,但無法處理 HTTP 訊息,它在網站應用程式中的角色通常是作為參數物件(在 JSP 和 servlet 之間傳遞,
     17 以共享資訊)或工具類別,作為參數物件時,通常代表種資料,因此被稱為 value bean,作為工具類別時,則稱為 utility bean。
     18 
     19 * 怎樣的類別可以稱為 JavaBeans?
     20
     21只要你遵守 JavaBeans 規範中所建議的命名和設計慣例,而且你以 bean 的方式使用它,那麼它就可以稱為一個 bean。
     22
     23 * JSP 如何使用 JavaBeans?
     24
     25要讓 JSP 能夠使用你的 bean,你的 bean 必須提供一組屬性,JSP 便可以透過特殊的標籤來存取這個 bean 的屬性。所謂的屬性,其實是一組 getter 和 setter methods
     26
     27{{{
     28#!java
     29public class EmployeeBean {
     30    private int age;
     31    public int getAge() {
     32        return age;
     33    }
     34    public void setAge(int age) {
     35        self.age = age;
     36    }
     37}
     38}}}
     39
     40{{{
     41#!java
     42<jsp:useBean id="emp" class="com.huanlin.EmployeeBean" scope="request"/>
     43<jsp:setProperty name="emp" property="age" value="25" />
     44員工的年齡是: <jsp:getProperty name="emp" property="age" />
     45}}}
     46
     47其中
     48
     49 * <jsp:useBean> 標籤就是指明要使用一個 bean 物件,id 代表該物件的名稱,class 指明了要使用什麼類別的 bean,scope 則代表物件的生命週期。
     50 * <jsp:setProperty> 標籤用來設定 bean 的屬性值,property 指明了要設定哪個屬性,value 就是數值,要別注意的是,HTML 表單傳入的資料一定是字串,但我們的 age 屬性卻是整數,這個部分的轉換會由 Web container 幫我們處理掉。
     51 * <jsp:getProperty> 標籤是用來取得 bean 的屬性值。
     52
     53請特別注意兩點:
     54
     55   1. 屬性的大小寫。在 JSP 裡面,屬性的名稱是完全小寫的 "age",但是 getter 和 setter methods 的名稱卻是 getAge() 和 setAge(),這種名稱的轉換對應規則是固定的,照這個規則來命名,Web container 就能夠找到正確的存取方法。
     56   2. 對於 OOP 觀念不熟的人來說,可能會誤以為在 JSP 裡面存取的 "age" 屬性,就是類別定義裡面的那個宣告為 private 成員(age),其實兩者只有字面上相同而已,實際運作是可以毫無關聯的,因為 JSP 完全是透過 getter 和 setter 方法來存取屬性,況且外界本來就無法存取類別的私有成員。
     57
     58
     59 = 參考 =
     60 
     61 * [http://www.webjx.com/htmldata/2005-10-31/1130719703.html jsp Servlet基礎入門學習教程 ]
     62 * [http://sun.cis.scu.edu.tw/~nms9115/articles/java/WebAppTutor/JspServletBean/JspServletBean.htm JSP、Servlet 與 JavaBean 的組合應用 ]