JaveBean與 Model 1
一、Model1
如果由JSP接受使用者請求,并對使用者請求做出處理、相應。這樣,html界面腳本中有很多資料通路、邏輯的代碼,不容易維護,比較混亂。類似于在Android中,大量的用java代碼處理本可以又XML處理的靜态界面操作。
是以,資料、邏輯操作和靜态UI必須分離出來。如下圖所示,就是Model1的思想。
簡單說來,就是JSP處理靜态布局。而資料通路和邏輯操作全用JavaBean 封裝,由JavaBean與資料庫互動。這裡是一種分層的思想(當然,Model 1的分層還不徹底,是以後續還有有Model2)。下面就來說說JavaBeans如何封裝和使用。
二、JavaBeans 封裝
JavaBean 是符合特定規範的Java類。 使用JavaBean的目的是減少備援代碼,減少重複編寫,明确的區分功能,進而提高可維護性。
JavaBean 的設計原則:
(1)共有類:public (2)屬性私有:内部參數為private (3)無參的共有構造方法: (4)get()&set()方法:通過set/get 方法封private 屬性
注意!以上原則的後後一條主要用來限制資料型的JavaBeans,當封裝邏輯的時候,如果并不涉及資料,并不會涉及到原則(4)(純邏輯的話,根本沒有資料嘛)。
JavaBean具體定義、引用步驟:
1)在src目錄下建立一個class,并且保證該Class符合JavaBean規範。
2)在要使用的該類的.jsp 中引入這個包,如
<%@ page import="com.example.xxClass" %>
3)jsp 腳本中使用這個類,同Java SE
三、JSP動作元素
JSP動作元素由一個XML标簽表示,為請求處理提供資訊。
動作标簽共有5類:
1)與javaBean 存取相關的,包括: <jsp:useBean> <jsp:setProoerty><jsp:getProperty>
2)6個基本元素動作 :〈jsp:include〉〈jsp:forward〉〈jsp:param〉〈jsp:plugin〉〈jsp:params〉〈jsp:fallback〉
3)6個Jsp Document有關的元素 :〈jsp:root〉 〈jsp:declaration〉〈jsp:scriptlet〉〈jsp:expression〉〈jsp:text〉〈jsp:output〉
4)動态生成Xml元素置 :〈jsp:attribute〉〈jsp:body〉〈jsp:element〉
5)Tag File相關:〈jsp:invoke〉〈jsp:dobody〉
四、useBeans & setProperty & getProperty 動作
useBean
useBean動作在JSP中執行個體化一個JavaBean,與 new 出一個執行個體不同,還可以選擇用 jsp 标簽執行個體化一個JavaBeans,如:
<jsp:useBean id="myBean" calss="com.example.mJavaBean" scope="page"/>
這行标簽就等價于:
mJavaBean myBean=new mJavaBean;
注意,jsp标簽中的最後一個attribute [scope] 用來指定這個myBean執行個體的有效範圍,這裡的有效範圍是整個page, 是以和 "new" 完全等效。後文會詳細說明有效範圍。
setProperty
看到這裡,JavaBeans 規範中的 new,set,get 方法的原因就很清楚了。useBeans 實際是在調用無參數的constructor.
而setProperty是在調用set方法。 get同理。
setProperty動作标簽共有4種形式,分别是
1)
<jsp:setProperty name="mBean" property= "*"/>
和表單相關聯,*代表所有表單内容。如果表單内容名字自動比對,比對成功則set
2)
<jsp:setProperty name="mBean" property= "property"/>
和表單相關,隻比對property 中指定的 表單中的屬性
3)
<jsp:setProperty name="mBean" property= "property" value="value"/>
直接顯示的調用set方法
4)
<jsp:setProperty name="mBean" property= "property" value="value" param=="request_param"/>
param 為 URL中request 參數的名字,如 action= "xxx.jsp?pa=123" 中的pa
getProperty
與"set"标簽完全類似,隻是這裡調用get方法。隻有一種形式。
<jsp:getProperty name="JavaBean name" property="property name"/>
五、JavaBean 作用範圍 (scope)
在useBeans标簽中,需要指定JavaBeans 的作用範圍(scope)。JavaBeans 共有4種作用範圍,從小到大依次是:
1)page: 盡在目前頁有效(page定義就是目前頁,之前的博文有解釋)。
2)request: 可以通過 HttpRequest.getAttribute() 獲得該JavaBean
3)session: 可以通過 HttpSession.getAttribute() 獲得該JavaBean, 同上
4)application; 可以通過 application.getAttribute() 獲得該JavaBean.