亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為 Web 服務構建 Struts 應用程序

2019-11-18 15:55:28
字體:
來源:轉載
供稿:網友

  當您要將企業應用程序轉變成與 Web 服務一起使用時,最簡單的途徑就是將單個操作與單個的企業服務結合在一塊。但這并不是最好的方法。在本文中,Jerome Josephraj 將向您展示如何構架基于分層的、正確的模型-視圖-控制器(MVC)設計模式的Web 服務應用程序。為此,他修改了 Struts(一種流行的開放源碼MVC 框架),以使其適用于 Web 服務領域。通過研究此處所概述的樣本應用程序,您將知道如何才能將 Struts 與 Web 服務聯合起來使用。
  
  不斷發展的 java 編程語言和 Sun 公司的 J2EE 規范使得遵守各類準則的軟件開發者們能夠創建出分布式計算應用程序,這些應用程序在以前只能通過相關專門工具才可實現。這樣,當某些開發團體要選擇在 Java 平臺中實現新系統時,其他團體就會通過另外的技術來創建、提高并維護應用程序,然后將它們集成到已有的各類分布式應用程序中去。這種情形就引起了互操作性的競爭。新應用程序與舊應用程序如何交互呢?答案就是:Web 服務。Web 服務是程序設計新的圣杯。它們能夠共享并協調分散的各類計算資源。
  
  在本文中,您將了解實現此目的的一種方法。您將看到如何在與 Web 服務相結合的開放源碼 Struts 框加的基礎上來構建應用程序。在開始之前您必須了解一些 J2EE 與 Web 服務的相關知識。這里,我將簡要地介紹下 Struts 架構與模型-視圖-控制器(MVC),假如您以前沒碰到過,那么您應該在后面先看下 參考資料 部分來獲取更多信息。
  
  MVC 模式:分離開發角色
  MVC 設計模式很清楚的劃定了程序員與設計者的角色界限。換句話說,從商業邏輯上拆解了數據。這種模式是讓設計者集中于設計應用程序的顯示部分,而開發者則集中于開發驅動應用程序功能所需的組件
  
  MVC 模式有好幾種變異,不過它們都是基于相同的基礎結構:應用程序的數據模型 (Model),顯示層代碼(View),以及程序控制邏輯( Controller) 是存在其中的獨立但能相互間通信的組件。模型組件描述并處理應用程序數據。視圖指的是用戶界面;它反映的是模型數據并把它遞交給用戶??刂破魇菍⒁晥D上的行為(例如,按下 Submit 按鈕)映射到模型上的操作(例如,檢索用戶具體信息)。模型更新后,視圖也被更新,用戶就能夠完成更多行為。MVC 模式使代碼易懂而且使代碼更輕易重用;另外,在很多工程中視圖經常要被更新,MVC 模式將模型和控制器與這些所做的更改獨立開來。
  
  
圖 1. MVC 設計模式

  
 為 Web 服務構建 Struts 應用程序(圖一)

  Struts:基于 MVC 的堅固框架
  Struts 是 MVC 模式基礎上構建 Web 應用程序的一種開放源碼框加。Struts 鼓勵在 MVC 模式上構建應用程序而且提供大多數 Web 應用程序所共有的服務。
  
  在 Struts 應用程序中,您可以構建模型層,這樣業務邏輯與數據檢索邏輯重用就很輕易了。這層負責運行應用程序的業務邏輯,獲取相關數據(例如,運行 SQL 命令或者讀取平面文件)。
  
  Struts 鼓勵在模型-視圖-控制器設計范例基礎上構建應用程序。Struts 提供自己的控制器組件(ActionController 類)并與其他技術相結合來提供模型與視圖。對于模型(Model 類), Struts 能與任何標準的數據訪問技術相結合,包括 EJB、JDBC 以及 Object-Relational Bridge。對于視圖(ActionForm 類),Struts 在 jsp 環境以及其他基于表示邏輯的系統中運行的很好。圖 2 闡明了基于 Struts 應用程序的邏輯流程。
  
  
圖 2. Struts 應用程序的邏輯流

  
 為 Web 服務構建 Struts 應用程序(圖二)

  簡單粗糙的 Web 服務體系結構
  
  構建 Web 服務最簡單的途徑就是將單個操作與單個企業服務結合起來,如圖 3 所示。在這種設計方法中,實現業務邏輯的服務與實現數據檢索的服務是混合在一起的。
  
  
圖 3. 簡單粗糙的 Web 服務體系結構

  
 為 Web 服務構建 Struts 應用程序(圖三)

  這樣的一種 Web 服務可以很輕易從已有的業務組件中開發出來。然而,它有很多的缺點:對用戶沒有提供統一認證,提供者與訂閱者耦合不緊,業務邏輯沒有重用。簡而言之,對于一個連貫的解決方案來說這并不是一個非常好的體系結構。
  
  在 MVC 模式基礎上來實現 Web 服務解決方案會更好點。在后續部分,您將看到如何使用 Struts 來做到這一點。我將通過 WSManager 層來詳述現有的 Struts 架構,這一層展示了采用 Web 服務的模型服務方法。
  
  采用 Struts 應用程序的 Web 服務
  在以后的開發工作中您可以擴大構建得比較好的 Struts 應用程序來支持 Web 服務。前面講過,Struts 架構清楚地區分開了視圖、控制器以及模型。模型包含所有必須的業務邏輯,從存儲數據倉庫中檢索數據。您可以構建一個簡單的 Web 服務層——稱為 WSManager 層——這樣的模型可以提供 Web 服務也可以訂購 Web 服務。使用這種體系結構的應用程序將基于組件開發的最佳點與萬維網結合在了一起,如 圖 4所示。
  
  
圖 4. 采用 Web 服務的 Struts 應用程序

  
為 Web 服務構建 Struts 應用程序(圖四)

  下面的部分要討論的是這種體系結構中不同組件的具體信息,非凡要密切注重 WSManager 層,因為它是此體系結構中真正新加的部分。
  
  Struts 控制器
  MVC 體系結構的控制器部分主要集中于接收客戶端的請求(一般為運行 Web 瀏覽器的用戶),決定執行哪一種業務邏輯功能來響應請求,然后負責生成下一個用戶界面連接到合適的視圖組件上去。在 Struts 中,控制器的主要組件就是 ActionServlet 類的一個小服務程序。
  
  ActionServlet 負責通過 xml 文檔將 URI 請求映射到特定的行為。這個文檔包含了 URI 請求列表而且還告知 ActionServlet 它應該如何分配每個請求。這種方法有幾個好處:
  
  應用程序的整個邏輯流程在分級文本文件中。
  這種格式的列表更輕易查看與理解,尤其是對于一個很大的應用程序而言。
   ActionServlet 決定了應用程序的流程。許多 Action 類都繼續了 ActionServlet 。每個 Action 類:
  
  都映射到各自獨立的處理過程
  通過 Struts 的 ActionController 與 Struts JSPs 相結合
  作為繼續 Struts中 Action 類的一個 Java 類來實現。
  Struts中 Action 類調用 WSManager 類中的相關方法來使用 Web 服務。 WSManager 獲取所要求的響應——或者假如有一個被解除了就會出現異常——將它回傳給 Struts 控制器。
  
  WSManager
  WSManager 接收 JAX-RPC 端點的請求。將 WSManager 類中的方法調用映射到新來的客戶端請求。這些新來的客戶端請求是 SOAP 信息的格式。WSManager 必須實現安全認證,轉變參數,在指定請求到模型服務之前,要對這些請求進行參數預處理。請求所包含的參數形式有 Java 對象,Java原始參數,XML 文檔,或者甚至是 SOAP 文檔分片(例如,SOAP Element 對象)。這些類型必須要轉化成內部所支持的 schema(例如,預定義的 Java 數據訪問對象)。
  
  雖然 WSManager 可以很直接地處理與 Java 對象結合的參數,但它還需要采取一些附加步驟來處理 XML 文檔。建議以下步驟:
  
   WSManager 類應該能夠通過XML Schema來驗證XML文檔的有效性。
   WSManager 類接著要把 XML 文檔轉化成內部支持的 schema。
  最后 WSManager 應該分解文檔并且盡可能地將它映射到域對象中去。
   WSManager 實現以下任務是非常重要的:
  
  身份驗證和授權使用
  錯誤處理
  緩存。
   WSManager 也可以生成響應;這個過程由方法調用返回值的簡單構造所組成。WSManager 中保留這樣的功能,您可以通過緩存數據從而避免重復訪問模型服務層。您還可以集中治理響應聚集以及 XML 文檔轉換,假如您要返回給調度者的文檔必須遵守與內部 schema 不同的 schema 時,這一點就顯得尤其重要。
  
   WSManager 處理所有SOAP 請求并把它們委派到模型層所暴露的業務邏輯。假如模型服務是作為一個 EJB 層來實現,那您一樣可以在 EJB 層中通過 session Fa?ade 設計模式來實現。假如您采用這種模式執行 WSManager ,您將獲得很多好處,因為 WSManager 會:
  
  作為初始聯系點來治理請求與服務
  調用安全服務,包括身份驗證與授權使用,從而避免任何重復的層訪問。
  委派業務處理(采用由 Struts 應用程序所使用的模型服務)
  在 WSManager 層緩存數據避免任何不必要的數據庫訪問。
  發布者:展示 Web 服務
  在 WSManager 類中實現的每一個公共方法都將作為一種 Web 服務發布出來。換句話說,您要為這些類發布一種 Web 服務描述 。Web 服務描述是由服務的 Web 服務描述語言(Web Services Description Language,WSDL)描述與由它所引用的任何 XML schema 所組成。(WSDL 是描述服務的標準語言。)
  
  您可以在公共注冊中心或在企業內的公司注冊表上發布 Web 服務描述。同樣,你也可以發布由WEB 服務定義的XML Schema到同一個公共的或者公司專有的(UDDI)注冊中心上。 Java Web 服務客戶端采用 JAXR 應用編程接口來查詢公司或公共注冊表上的服務描述。
  
  假如您的客戶都是專有的合作伙伴,那您就不需要使用注冊表了。不過,您可以在您的應用程序的 Web 層或者在具備適當安全保護的熟知位置來發布您的 Web 服務描述( WSDL 和 XML schemas)。例如,假想有一個轉售者的客戶應用程序,他與某個非凡廠商有協定??蛻魬贸绦蛞呀浽趶S商開發時

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区av在线| 久久精品视频va| 一区二区三区视频观看| 欧美猛少妇色xxxxx| 亚洲一品av免费观看| 狠狠做深爱婷婷久久综合一区| 中文字幕国产亚洲2019| 日韩精品在线免费观看| 高清欧美一区二区三区| 91免费在线视频| 奇米一区二区三区四区久久| 日本久久久久久久久久久| 欧美日韩国产限制| 国产一区二区三区在线免费观看| 日韩免费av在线| 久久久中精品2020中文| 欧美做爰性生交视频| 国产精品高潮视频| 91精品国产自产在线| 成人a视频在线观看| 精品国产区一区二区三区在线观看| 国产自产女人91一区在线观看| 亚洲视频网站在线观看| 欧美精品性视频| 成人免费观看网址| 亚洲第一综合天堂另类专| 久久亚洲成人精品| 91人成网站www| 日韩视频欧美视频| 国产区亚洲区欧美区| 91禁国产网站| 最近2019中文字幕大全第二页| 欧美国产在线电影| 亚洲欧美日韩图片| 亚洲成人久久久| 韩剧1988免费观看全集| 色婷婷**av毛片一区| 欧美日韩一区免费| 亚洲国产一区二区三区四区| 久久成人在线视频| 中文字幕9999| 视频在线观看一区二区| 91精品国产综合久久久久久蜜臀| 久久久久久91香蕉国产| 日韩一二三在线视频播| 久久久久久久久久久久久久久久久久av| 国内精久久久久久久久久人| 欧美乱大交做爰xxxⅹ性3| 精品国产一区二区三区四区在线观看| 国产国语刺激对白av不卡| 亚洲精品国偷自产在线99热| 亚洲视频axxx| 国模极品一区二区三区| 亚洲高清色综合| 亚洲影院污污.| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品夫妻激情| 在线视频亚洲欧美| 欧美成人激情视频免费观看| 亚洲一区二区福利| 亚洲综合色激情五月| 日本精品久久中文字幕佐佐木| 一区二区三区在线播放欧美| 色中色综合影院手机版在线观看| 久久在线视频在线| 2025国产精品视频| 国产在线播放不卡| 亚洲一区二区三区在线免费观看| 国产精品男人的天堂| 3344国产精品免费看| 2024亚洲男人天堂| 5278欧美一区二区三区| 中文字幕在线看视频国产欧美在线看完整| 2018日韩中文字幕| 欧美丰满片xxx777| 欧美午夜片欧美片在线观看| 欧美二区乱c黑人| 色偷偷偷综合中文字幕;dd| 国产精品入口免费视频一| 国产精品视频26uuu| 亚洲欧美国产日韩中文字幕| 成人免费直播live| 26uuu另类亚洲欧美日本一| 亚洲自拍小视频| 亚洲电影av在线| 国产成人jvid在线播放| 日韩亚洲成人av在线| 精品国产区一区二区三区在线观看| 精品久久中文字幕久久av| 国语自产精品视频在免费| 亚洲日韩欧美视频| 欧美美女操人视频| 亚洲最大的免费| 一区二区三区视频免费在线观看| 亚洲伊人久久大香线蕉av| 精品国产乱码久久久久久天美| 国产精品夫妻激情| 中文字幕欧美日韩精品| 欧美日韩成人在线播放| 2020欧美日韩在线视频| 欧美黄色片免费观看| 亚洲天堂第一页| 欧美高清视频在线播放| 久久97精品久久久久久久不卡| 久久艳片www.17c.com| 超碰精品一区二区三区乱码| 亚洲视频一区二区| 国产日产久久高清欧美一区| 日韩高清有码在线| 欧美黑人xxx| 欧美激情亚洲激情| 欧美一级大胆视频| 日日摸夜夜添一区| 亚洲第一中文字幕在线观看| 亚洲国产日韩精品在线| 国产精品视频1区| 欧美国产亚洲视频| 国产精品精品视频一区二区三区| 欧洲亚洲女同hd| 精品高清美女精品国产区| 最近中文字幕mv在线一区二区三区四区| 久久97精品久久久久久久不卡| 日本中文字幕久久看| 97精品久久久| 亚洲色图在线观看| 精品一区二区三区四区| 欧美精品在线免费观看| 最近2019好看的中文字幕免费| 国产精品手机播放| 91免费人成网站在线观看18| 日韩免费av片在线观看| 国产精品国产三级国产专播精品人| 久久香蕉国产线看观看av| 久久久久五月天| 国产国语刺激对白av不卡| 亚洲国产97在线精品一区| 久久在线观看视频| 国产精品永久在线| 久热精品视频在线免费观看| 国产精品国产自产拍高清av水多| 久久久精品国产亚洲| 欧美成人一区在线| 色无极影院亚洲| 亚洲精品国产精品乱码不99按摩| 欧美最顶级丰满的aⅴ艳星| 国产精品国产三级国产aⅴ9色| 欧美巨大黑人极品精男| 国产99久久久欧美黑人| 91亚洲永久免费精品| 成人妇女免费播放久久久| 国产精品久久久久久久久粉嫩av| 久久久久久久av| 国产精品久久久久久久午夜| 国产免费观看久久黄| 97视频免费在线看| 国产成人啪精品视频免费网| 亚洲毛茸茸少妇高潮呻吟| 亚洲在线免费视频| 亚洲国产另类久久精品| 久久久久久尹人网香蕉| 久久免费视频在线观看| 久久久久久97| 成人免费看片视频| 亚洲欧美制服综合另类|