| 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 |
| 29 | public 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 的組合應用 ] |