{{{ #!html
整合 jsp + servlet + javabean
}}} [[PageOutline]] = 重點 = == JSP、Servlet 與 JavaBean 的組合應用 == * JavaBeans 只是普通的類別 Servlet 的 Java 類別是繼承自 javax.servlet.HttpServlet,因此具有接收 HTTP request 和送出 HTTP response 等網站應用程式的基本功能, 而 JavaBeans 則只是單純的類別,它可以繼承自任何類別,但無法處理 HTTP 訊息,它在網站應用程式中的角色通常是作為參數物件(在 JSP 和 servlet 之間傳遞, 以共享資訊)或工具類別,作為參數物件時,通常代表種資料,因此被稱為 value bean,作為工具類別時,則稱為 utility bean。 * 怎樣的類別可以稱為 JavaBeans? 只要你遵守 JavaBeans 規範中所建議的命名和設計慣例,而且你以 bean 的方式使用它,那麼它就可以稱為一個 bean。 * JSP 如何使用 JavaBeans? 要讓 JSP 能夠使用你的 bean,你的 bean 必須提供一組屬性,JSP 便可以透過特殊的標籤來存取這個 bean 的屬性。所謂的屬性,其實是一組 getter 和 setter methods {{{ #!java public class EmployeeBean { private int age; public int getAge() { return age; } public void setAge(int age) { self.age = age; } } }}} {{{ #!java 員工的年齡是: }}} 其中 * 標籤就是指明要使用一個 bean 物件,id 代表該物件的名稱,class 指明了要使用什麼類別的 bean,scope 則代表物件的生命週期。 * 標籤用來設定 bean 的屬性值,property 指明了要設定哪個屬性,value 就是數值,要別注意的是,HTML 表單傳入的資料一定是字串,但我們的 age 屬性卻是整數,這個部分的轉換會由 Web container 幫我們處理掉。 * 標籤是用來取得 bean 的屬性值。 請特別注意兩點: 1. 屬性的大小寫。在 JSP 裡面,屬性的名稱是完全小寫的 "age",但是 getter 和 setter methods 的名稱卻是 getAge() 和 setAge(),這種名稱的轉換對應規則是固定的,照這個規則來命名,Web container 就能夠找到正確的存取方法。 2. 對於 OOP 觀念不熟的人來說,可能會誤以為在 JSP 裡面存取的 "age" 屬性,就是類別定義裡面的那個宣告為 private 成員(age),其實兩者只有字面上相同而已,實際運作是可以毫無關聯的,因為 JSP 完全是透過 getter 和 setter 方法來存取屬性,況且外界本來就無法存取類別的私有成員。 * 作者給的原始碼,其中判斷質數的範例可以 work ,而其他跟 servlet 溝通的範例則永遠都顯示 "從 servlet 傳來的訊息: null " ,與作者要印出的hello world 有出入 = 參考 = * [http://www.webjx.com/htmldata/2005-10-31/1130719703.html jsp Servlet基礎入門學習教程 ] * [http://sun.cis.scu.edu.tw/~nms9115/articles/java/WebAppTutor/JspServletBean/JspServletBean.htm JSP、Servlet 與 JavaBean 的組合應用 ] * [http://caterpillar.onlyfun.net/Gossip/JSPServlet/JSPServlet.htm 語言技術: JSP/Servlet]