日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

淺談STRUTS框架應(yīng)用對(duì)于Web服務(wù)擴(kuò)展的作用

出處:王力生 沈 駿 發(fā)布于:2011-08-28 09:54:08

  STruts是開(kāi)源軟件。使用Struts的目的是為了幫助我們減少在運(yùn)用MVC設(shè)計(jì)模型來(lái)開(kāi)發(fā)Web應(yīng)用的時(shí)間。如果我們想混合使用Servlets和JSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,struts是一個(gè)不錯(cuò)的選擇。

  1  Struts框架應(yīng)用模式

  1)建立在MVC這種公認(rèn)的好的模式上的,struts在M,V,C上都有涉及,但它主要是提供一個(gè)好的控制器和一套定制的標(biāo)簽庫(kù),也就是說(shuō)它的著力點(diǎn)在C和V上,有mvc的一系列有點(diǎn),如:結(jié)構(gòu)層次分明,高可重用性,增加了程序的健壯性和可伸縮性,便于開(kāi)發(fā)與設(shè)計(jì)分工,提供集中統(tǒng)一的權(quán)限控制、校驗(yàn)、國(guó)際化、日志等。

  2)開(kāi)源項(xiàng)目,并且經(jīng)受了實(shí)戰(zhàn)的檢驗(yàn),使其功能越來(lái)越強(qiáng)大,體系也日漸完善。

  3)與其他技術(shù)和框架具有很好的融合性

  4)提高了開(kāi)發(fā)速度

  Struts其實(shí)是一個(gè)MVC設(shè)計(jì)模式的J2EE表現(xiàn)。它通過(guò)把一組相互協(xié)作的類(lèi)(組件)、Java Servlet以及JSP tag lib結(jié)合在一個(gè)統(tǒng)一的框架內(nèi)(其中ActionServlet處理客戶請(qǐng)求),利用配置的ActionMapping對(duì)象把請(qǐng)求映射到Action處理器對(duì)象進(jìn)行處理。Action處理對(duì)象訪問(wèn)ActionForm中的數(shù)據(jù),處理和響應(yīng)客戶請(qǐng)求,調(diào)用后臺(tái)封裝了具體業(yè)務(wù)邏輯的Bean組件。Action處理器對(duì)象根據(jù)處理結(jié)果通知Controller,由Controller進(jìn)行下一步的處理。Struts的體系結(jié)構(gòu)如圖1 所示。

  下面通過(guò)圖1所示的體系結(jié)構(gòu)圖分析Struts框架的Web應(yīng)用模式。

  (1)模型部分。在Struts中,模型(Model)由一系列的JavaBean和EJB組件構(gòu)成,用來(lái)設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯。根據(jù)不同的請(qǐng)求從Action派生具體Action處理對(duì)象。使用“做什么”的任務(wù)來(lái)調(diào)用由Bean構(gòu)成的業(yè)務(wù)組件。創(chuàng)建由ActionForm的派生類(lèi)實(shí)現(xiàn)對(duì)客戶端表單數(shù)據(jù)的封裝。

  (2)控制器部分。Struts中的Controller 主要是其自身提供的ActionServlet,而ActionServlet 的就是struts-config.xml配置文件,它包含了所有頁(yè)面導(dǎo)航的定義。ActionServlet 接受請(qǐng)求并根據(jù)配置文件中的定義將控制轉(zhuǎn)移到適當(dāng)?shù)腁ction 類(lèi)。其余的控制邏輯以及對(duì)Model的訪問(wèn)由Action類(lèi)負(fù)責(zé)完成。

  (3)視圖部分。Struts中的View主要由JSP技術(shù)實(shí)現(xiàn),并利用自定義的標(biāo)記庫(kù)方便地和系統(tǒng)的Model部分交互。這些自定義標(biāo)記創(chuàng)建的JSP表單,可以實(shí)現(xiàn)和Model部分中的ActionForm的映射,完成對(duì)用戶數(shù)據(jù)的封裝,同時(shí)這些自定義標(biāo)記還提供了很多定制頁(yè)面的功能。

  2  STRUTS框架擴(kuò)展Web服務(wù)模型

  2.1 MVC模型特征的Web服務(wù)體系結(jié)構(gòu)

  通常有二種基于J2EE實(shí)現(xiàn)Web服務(wù)的方式:一種是把Servlet作為Web服務(wù)端點(diǎn)進(jìn)行開(kāi)發(fā);另一種是公開(kāi)無(wú)狀態(tài)EJB組件作為Web服務(wù)端點(diǎn)進(jìn)行開(kāi)發(fā)。相比較而言,把EJB作為Web服務(wù)端點(diǎn)進(jìn)行開(kāi)發(fā)具有明顯的優(yōu)勢(shì)。

  通過(guò)無(wú)狀態(tài) EJB 組件把各種服務(wù)和業(yè)務(wù)流程公開(kāi)為 Web 服務(wù)的SOA框架如圖2所示。圖中所示的Web服務(wù)的體系結(jié)構(gòu)是一種典型的MVC model2的框架。

  客戶端(Client):用戶通過(guò) Web 瀏覽器與不同的應(yīng)用程序交互。

  應(yīng)用程序控制器(Application controller):對(duì)應(yīng)于Struts框架中的Controller部分,提供主控制器 servlet。它負(fù)責(zé)初始化、委派請(qǐng)求和響應(yīng)請(qǐng)求處理程序。

  請(qǐng)求處理程序(Request processor)、請(qǐng)求執(zhí)行程序(Request handlers)和業(yè)務(wù)定位程序(Business locators):這三部分功能的組合對(duì)應(yīng)于Struts框架中的Action部分。其中請(qǐng)求處理程序調(diào)用相應(yīng)的請(qǐng)求執(zhí)行程序完成要求的處理,對(duì)請(qǐng)求進(jìn)行預(yù)處理。請(qǐng)求執(zhí)行程序依靠業(yè)務(wù)定位程序發(fā)現(xiàn)相應(yīng)的服務(wù),完成具體的請(qǐng)求活動(dòng)。業(yè)務(wù)定位程序負(fù)責(zé)隱藏查找服務(wù)的復(fù)雜性,并提供緩存邏輯。

  會(huì)話 Facades(Session Facades)和EJB Web 服務(wù)(EJB Web services):對(duì)應(yīng)于Struts框架中的ActionForm部分,通過(guò)聚合來(lái)自多個(gè)系統(tǒng)或服務(wù)的方法簡(jiǎn)化復(fù)雜對(duì)象的視圖。會(huì)話 facades是EJB Web服務(wù)方法的包裝器。根據(jù) EJB 1.4規(guī)范,Web服務(wù)端點(diǎn)可以模型化為無(wú)狀態(tài)的會(huì)話 Bean。

  2.2 Struts框架擴(kuò)展Web服務(wù)

  Web服務(wù)(Web Service)是基于XML和HTTPS的一種服務(wù),其通信協(xié)議主要基于SOAP,服務(wù)的描述通過(guò)WSDL,通過(guò)UDDI來(lái)發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù)。研究一下當(dāng)前的應(yīng)用程序開(kāi)發(fā),你會(huì)發(fā)現(xiàn)一個(gè)的傾向:人們開(kāi)始偏愛(ài)基于瀏覽器的瘦客戶應(yīng)用程序。這當(dāng)然不是因?yàn)槭菘蛻裟軌蛱峁└玫挠脩艚缑?,而是因?yàn)樗軌虮苊饣ㄔ谧烂鎽?yīng)用程序發(fā)布上的高成本。發(fā)布桌面應(yīng)用程序成本很高,一半是因?yàn)閼?yīng)用程序安裝和配置的問(wèn)題,另一半是因?yàn)榭蛻艉?a target="_blank">服務(wù)器之間通信的問(wèn)題。

  許多商用程序還面臨另一個(gè)問(wèn)題,那就是與其他程序的互操作性。如果所有的應(yīng)用程序都是使用COM或.NET語(yǔ)言寫(xiě)的,并且都運(yùn)行在Windows平臺(tái)上,那就天下太平了。然而,事實(shí)上大多數(shù)商業(yè)數(shù)據(jù)仍然在大型主機(jī)上以非關(guān)系文件(VSAM)的形式存放,并由COBOL語(yǔ)言編寫(xiě)的大型機(jī)程序訪問(wèn)。而且,目前還有很多商用程序繼續(xù)在使用C++、Java、Visual Basic和其他各種各樣的語(yǔ)言編寫(xiě)。現(xiàn)在,除了簡(jiǎn)單的程序之外,所有的應(yīng)用程序都需要與運(yùn)行在其他異構(gòu)平臺(tái)上的應(yīng)用程序集成并進(jìn)行數(shù)據(jù)交換。這樣的任務(wù)通常都是由特殊的方法,如文件傳輸和分析,消息隊(duì)列,還有僅適用于某些情況的的API,如IBM的"程序到程序交流(APPC)"等來(lái)完成的。

  在用擴(kuò)展構(gòu)建得比較好的Struts應(yīng)用程序支持 Web服務(wù)的時(shí)候,可以利用Web服務(wù)體系結(jié)構(gòu)的MVC模式特性在Struts框架的相應(yīng)部分進(jìn)行修改和擴(kuò)充,從而在不改變?cè)袘?yīng)用架構(gòu)和具體實(shí)現(xiàn)的基礎(chǔ)上方便有效地使應(yīng)用程序具有Web服務(wù)的功能。

  本模型通過(guò)將Web服務(wù)的控制流程包裝成相應(yīng)的Action類(lèi)——WSAction類(lèi),為企業(yè)應(yīng)用提供Web服務(wù)和定購(gòu)Web服務(wù)。在Struts框架中,根據(jù)不同的請(qǐng)求從Action派生具體Action處理對(duì)象,完成“做什么”的任務(wù)來(lái)調(diào)用由Bean構(gòu)成的業(yè)務(wù)組件。在擴(kuò)展Web服務(wù)的框架中,Servlet根據(jù)客戶端的請(qǐng)求是Web服務(wù)的請(qǐng)求而調(diào)用相應(yīng)的WSAction,派生具體的Action處理對(duì)象。完成“做什么”的任務(wù)調(diào)用模型服務(wù)部分,模型服務(wù)組件聚集相關(guān)的預(yù)定義數(shù)據(jù)訪問(wèn)對(duì)象,然后將它傳回給 ActionServlet 或者 WSAction 類(lèi)。所有的錯(cuò)誤或者確認(rèn)信息都會(huì)通知給 ActionServlet 或 WSAction。

  Struts框架的Web服務(wù)結(jié)構(gòu)如圖3所示。

  WSAction類(lèi)主要包括以下功能函數(shù)調(diào)用:

  (1)請(qǐng)求參數(shù)的預(yù)處理。請(qǐng)求所包含的參數(shù)形式有 Java 對(duì)象、Java原始參數(shù)、XML文檔或者SOAP文檔分片(例如SOAP Element對(duì)象)。這些類(lèi)型必須轉(zhuǎn)化成內(nèi)部所支持的schema(例如預(yù)定義的Java數(shù)據(jù)訪問(wèn)對(duì)象)。

  (2)身份驗(yàn)證和授權(quán)使用。為了保護(hù)公開(kāi)的Web服務(wù),需要對(duì)所有訂購(gòu)者執(zhí)行身份驗(yàn)證。所有想使用Web服務(wù)的客戶都要經(jīng)過(guò)這樣的身份驗(yàn)證邏輯。可以使用基本用戶身份驗(yàn)證或者數(shù)字證書(shū)來(lái)實(shí)現(xiàn)此目的。

  (3)錯(cuò)誤處理。錯(cuò)誤都是在WSAction類(lèi)中處理的,減少了服務(wù)器端的開(kāi)銷(xiāo)。在向外提供Web服務(wù)時(shí),WSAction拋出諸如SOAPFaultException這樣的異常,檢查新來(lái)的請(qǐng)求并且拋出諸如缺少?gòu)?qiáng)制字段的異常。在訂閱Web服務(wù)時(shí),WSAction捕捉到由服務(wù)供應(yīng)者所拋出的所有SOAP異常并且將它們更改為WSAction所要求的格式。Trace類(lèi)用來(lái)記錄這些異常。

  (4)Web服務(wù)緩存。當(dāng)服務(wù)的請(qǐng)求信息主要是只讀數(shù)據(jù)或者所請(qǐng)求信息比所要求的更新速率變化得還要慢時(shí),WSAction調(diào)用緩存服務(wù),這樣可避免不必要的數(shù)據(jù)庫(kù)訪問(wèn)。

  下面的程序給出了一個(gè)簡(jiǎn)單的WSAction實(shí)現(xiàn)。

  public WSActionForward perform(

  ActionMapping mapping,

  ActionForm form,

  XmlServletRequest request,

  XmlServletResponse response)

  throws IOException,ServletException {

  //對(duì)XML請(qǐng)求進(jìn)行預(yù)處理

  WSPreTreatment

  Pretreat=new(WSPreTreatment);

  Pretreat.treat(request);

  //抽取所需的屬性和參數(shù)

  WsForm wsForm=(WsForm) form;

  String parameter=wsForm.getParm( );

  WSActionErrors

  errors=new WSActionErrors( );

  //進(jìn)行服務(wù)

  WSAuthentication

  Auth=new WSAuthentication( );

  If Auth.check(parameter)=″ok″

  //調(diào)用model service..

  try {

  business.db.processaction(parameter);

  //服務(wù)結(jié)果緩存

  WSCaching

  Caching=new WSCaching( );

  Caching.Add( );

  } catch (Exception e) {

  //將錯(cuò)誤回顯給用戶

  errors.add(″Web services″,new WSActionError(″db error″));

  }

  //將控制權(quán)轉(zhuǎn)交給Action.xml中指定的′N(xiāo)ext′ URI

  return(mapping.findForward(″Next″));

  }

  3  結(jié)束語(yǔ)

  通過(guò)分析開(kāi)源的MVC Model2開(kāi)發(fā)框架Struts,把分布式應(yīng)用的一種新的形式——Web服務(wù)引入現(xiàn)有的、構(gòu)建得較好的Struts框架的Web應(yīng)用中。通過(guò)對(duì)比Struts框架和Web服務(wù)在體系結(jié)構(gòu)上共有的MVC模式發(fā)現(xiàn):集成的關(guān)鍵是在控制層和模型層之間信息的傳遞和銜接。因此,添加了Struts中的Action類(lèi)WsAciton,取得了較好的效果,方便地實(shí)現(xiàn)了擴(kuò)展Web服務(wù)。


  

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買(mǎi)家服務(wù):
賣(mài)家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!