JavaWeb技術之--面向對象設計模式

 面向對象設計模式

 

常用的面向對象設計模式有4種:

Factory模式、Singleton模式、Facade模式和MVC架構模式。

 

JSP設計模式

SUN公司推出JSP技術後,同時也推薦了兩種web應用程序的開發模式,一種是JSP+JavaBean模式,一種是Servlet+JSP+JavaBean模式。

 

JSP設計模式包括兩個:

1Model1JSP+JavaBean設計模式

2Model2MVC設計模式

 

模式一JSP+JavaBean模式

在這種模式中,JSP頁面獨自響應請求並將處理結果返回客戶,所有的數據庫操作通過JavaBean來實現。

 

大量地使用這種模式,常會導致在JSP頁面中嵌入大量的Java代碼,當需要處理的商業邏輯非常複雜時,這種情況就會變得很糟糕。大量的Java代碼使得JSP頁面變得非常臃腫。前端的頁面設計人員稍有不慎,就有可能破壞關係到商業邏輯的代碼。

 

這種情況在大型項目中經常出現,造成了代碼開發和維護的困難,同時會導致項目管理的困難。因此這種模式只適用於中小規模的項目。

JSP+JavaBean模式適合開發業務邏輯不太複雜的web應用程序,這種模式下,JavaBean用於封裝業務數據,JSP即負責處理用戶請求,又顯示數據。

 

模式二 MVC模式

MVC”模式即是:“Model-View-Controller”模式。在這種模式中,通過JSP技術來表現頁面,通過Servlet技術來完成大量的事務處理工作,實現用戶的商業邏輯。

 

在這種模式中,Servlet用來處理請求的事務,充當了控制器(Controller即“C”)的角色,Servlet負責響應客戶對業務邏輯的請求並根據用戶的請求行爲,決定將哪個JSP頁面發送給客戶。JSP頁面處於表現層,也就是視圖(View即“V”)的角色。JavaBean則負責數據的處理,也就是模型(Model即“M”)的角色

 

Servlet+JSP+JavaBean(MVC)模式適合開發複雜的web應用,在這種模式下,servlet負責處理用戶請求,jsp負責數據顯示,javabean負責封裝數據。 Servlet+JSPJavaBean模式程序各個模塊之間層次清晰,web開發推薦採用此種模式。

 

MVC架構

Model-View-Controller架構模式是80年代中期在Smalltalk-80 GUI(一種經典的面向對象程序設計語言)實驗室發明的。

根據MVC模式,一個軟件應該將商務邏輯(Model)和顯示(View)分開。分開有許多好處,最主要的有兩個方面:

 

1、同一的商務邏輯層(Model)可能會對應多個顯示層(View),如果商務邏輯層和顯示層放在一起的話,再添加一個顯示層的時候就會極大的增加組件的複雜性。一個商務邏輯對着兩個顯示層的例子是:銀行的帳戶的商務邏輯層對應ATMInternet兩個顯示層。

2、通常情況下,每次修改顯示層的時候一般並不需要修改商務邏輯層。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


例   

在jsp文件頭部加一個<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  指令,運用foreach

   <% 

       List list = new ArrayList();

       list.add(new User("aaa"));

       list.add(new User("bbb"));

       list.add(new User("ccc"));

       list.add(new User("ddd"));

       

       request.setAttribute("list",list);

   

    %>

    <c:forEach items="${list}" var="user">

      ${user.name }

    

    </c:forEach>

   

    <%

    Map map=new HashMap();

    map.put("aa",new User("aaaa"));

    map.put("bb",new User("bbbb"));

    map.put("cc",new User("cccc"));

    map.put("123",new User("dddd"));

    request.setAttribute("mapp",map);

     %><!--

     

   ${mapp.bb.name }<br/>

   ${mapp["123"].name }

   -->

   <c:forEach items="${mapp}" var="mapp">

    ${ mapp.key}----${mapp.value.name }

   </c:forEach>

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章