天天看點

Java Web學習筆記2——JavaBean 與 設計模式一(Model 1)

JaveBean與 Model 1

一、Model1

如果由JSP接受使用者請求,并對使用者請求做出處理、相應。這樣,html界面腳本中有很多資料通路、邏輯的代碼,不容易維護,比較混亂。類似于在Android中,大量的用java代碼處理本可以又XML處理的靜态界面操作。

是以,資料、邏輯操作和靜态UI必須分離出來。如下圖所示,就是Model1的思想。

Java Web學習筆記2——JavaBean 與 設計模式一(Model 1)

簡單說來,就是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.