在 Web 服務領域引入 MVC 模式的功能 5

2021-04-07 00:30:13 字數 2397 閱讀 8944

示例

我已經附上了實現此處所討論的體系結構的乙個簡單示例。所有的示例**都包含在了 zip 檔案中(請參閱下面的參考資料)。這個例子舉例說明了乙個簡單的新聞 portal。新聞內容是從資料來源(這裡稱為 datasource )傳送到 jsp 頁,同時資訊內容也要作為乙個 web 服務發布出來。這個 portal 也可以從 stockquote web 服務中檢索最新的****並顯示在同乙個 jsp 頁中。

這個 zip 檔案包含了所有的源**和 datasource 的 sql 指令碼。它還包含有 struts action 和 actionform 類、模型服務類以及用來為發布者與訂購者顯示結果及其源**的 jsp 頁。它同時還包含有 wsdl 檔案以及客戶端源**來訪問已發布的 newscontent web 服務。

這裡我不再闡述示例**的詳細資訊了;您想要發現它的複雜性,最好的途徑就是自己去試驗。開始時,我會向您說明應用程式如何將資訊內容(儲存在 datasource 中)和**資訊(從 web 服務處獲得)遞交給 jsp 頁的。

jsp 頁被載入時,它就呼叫 action 類,這個類在 mvc 設計模式中充當控制器角色。 action 類通過傳遞預定義的資料訪問物件來呼叫模型服務類中的 getnews() 方法。(清單 1 中所示的一小段 action 類**說明了如何從 action 類中呼叫模型服務。)

getnews() 方法實現了所有必需的業務邏輯與資料檢索邏輯。一旦從資料來源取出了相關資料,模型服務就可以聚集資料訪問物件並將它傳送回給 action 類。

清單 1. action 類的部分**

/* * create a pre-defined data access object

*/ newssearchresultvob = new newssearchresult();

/*

* call business layer new**s´s searchnews method passing the newscod

* and get back a collection of news

*/ newslist = (vector) new**s.getnews(newssearchresultvob);

/*

* put the newslist in the request.

* */

request.setattribute(systemconstants.news_list, newslist);

//set the newslist in the form

newsfrm.setnewsdetails(newslist);

從模型服務處接收到資料訪問物件後, action 類通過傳遞轉給模型服務的同乙個資料訪問物件來呼叫 w**anager 類中的 getstocks() 方法。 w**anager 類中的 getstocks() 方法執行 jax-rpc 來訂購** web 服務。

從** web 服務獲得的結果要轉變成本地的 schema 並且聚集回到預定義資料訪問物件中去。這個物件從它被呼叫的地方傳回到 action 類。 清單 2 闡明了如何使用 w**anager 中的 jax-rpc 來訂購 web 服務,以及如何將** web 服務的結果轉變成本地 schema 並聚集回到資料訪問物件中去。

清單 2. 訂購 web 服務及傳送響應

public vector getstocks() throws exception );

if(category.isdebugenabled())

//set stock name and stock values in stockvalue bean

stockvalue = new com.ddj.wsstruts.valueobject.stockvalue();

stockvalue.setstockname(stockname);

stockvalue.setstockvalue(result.tostring());

//add the stockvalue bean to stockvalues vector

stockvalues.add(stockvalue); } }

一旦 action 類呼叫完模型服務和 w**anager, actionform 中的**值及資訊內容域就會被填充。控制就被返回到 jsp 頁面,從 actionform 獲取所有必需的值並列印 ui.

結束語 在本文中,您看到了 structs 架構是如何與 web 服務相整合的。您也了解了如何使用 structs 元件來提供和預訂 web 服務。本文附帶的簡單應用程式**將幫助您深入理解所有這些是如何工作的。

使用此處所闡明的體系結構,您可以開發出這樣的企業應用程式,它非常健壯,很容易維護,而且能很容易地與早期應用程式整合在一起。我希望您將可以開發出更多的關於 structs 和 web 服務的專案,並看到這種體系結構在您自己的專案中是多麼的有用。

EasyUI 在mvc中的引入與使用

使用步驟 一 先引入 3.在mvc的布局頁面 layout.cshtml頁面引入jquery和easyui的js檔案和樣式,這裡引入就可以在每個頁面中去使用了。注意 由於引入了新的jquery檔案,原來預定義的 scripts.render bundles jquery 就要注釋掉,不然會產生衝突,...

在專案中引入領域驅動設計的經驗

chris patuzzo近期在一次演講中介紹了領域驅動設計 ddd 的原則,並結合乙個基於ruby on rails的真實專案進行講解。在這次專案之前,chris所在的團隊為重新設計公司的主營 所做的兩個概念驗證都因為可伸縮性方面的問題而失敗了。因此,業務主管部門決定在這一次嘗試中採取一種更為敏捷...

在專案中引入領域驅動設計的經驗

chris patuzzo近期在一次演講中介紹了領域驅動設計 ddd 的原則,並結合乙個基於ruby on rails的真實專案進行講解。在這次專案之前,chris所在的團隊為重新設計公司的主營 所做的兩個概念驗證都因為可伸縮性方面的問題而失敗了。因此,業務主管部門決定在這一次嘗試中採取一種更為敏捷...