国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
struts2原理
1.Struts 2的基本流程
  Struts 2框架由3個(gè)部分組成:核心控制器FilterDispatcher、業(yè)務(wù)控制器和用戶實(shí)現(xiàn)的業(yè)務(wù)邏輯組件。在這3個(gè)部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用戶需要實(shí)現(xiàn)業(yè)務(wù)控制器和業(yè)務(wù)邏輯組件。
2.核心控制器:FilterDispatcher
  FilterDispatcher是Struts 2框架的核心控制器,該控制器作為一個(gè)Filter運(yùn)行在Web應(yīng)用中,它負(fù)責(zé)攔截所有的用戶請(qǐng)求,當(dāng)用戶請(qǐng)求到達(dá)時(shí),該Filter會(huì)過(guò)濾用戶請(qǐng)求。如果用戶請(qǐng)求以action結(jié)尾,該請(qǐng)求將被轉(zhuǎn)入Struts 2框架處理。

Struts 2框架獲得了*.action請(qǐng)求后,將根據(jù)*.action請(qǐng)求的前面部分決定調(diào)用哪個(gè)業(yè)務(wù)邏輯組件,例如,對(duì)于login.action請(qǐng)求,Struts 2調(diào)用名為login的Action來(lái)處理該請(qǐng)求。

Struts 2應(yīng)用中的Action都被定義在struts.xml文件中,在該文件中定義Action時(shí),定義了該Action的name屬性和class屬性,其中name屬性決定了該Action處理哪個(gè)用戶請(qǐng)求,而class屬性決定了該Action的實(shí)現(xiàn)類。

Struts 2用于處理用戶請(qǐng)求的Action實(shí)例,并不是用戶實(shí)現(xiàn)的業(yè)務(wù)控制器,而是Action代理——因?yàn)橛脩魧?shí)現(xiàn)的業(yè)務(wù)控制器并沒(méi)有與Servlet API耦合,顯然無(wú)法處理用戶請(qǐng)求。而Struts 2框架提供了系列攔截器,該系列攔截器負(fù)責(zé)將HttpServletRequest請(qǐng)求中的請(qǐng)求參數(shù)解析出來(lái),傳入到Action中,并回調(diào)Action 的execute方法來(lái)處理用戶請(qǐng)求。

顯然,上面的處理過(guò)程是典型的AOP(面向切面編程)處理方式。圖3.19顯示了這種處理模型。 



圖3.19  Struts 2的攔截器和Action

從圖3.19中可以看出,用戶實(shí)現(xiàn)的Action類僅僅是Struts 2的Action代理的代理目標(biāo)。用戶實(shí)現(xiàn)的業(yè)務(wù)控制器(Action)則包含了對(duì)用戶請(qǐng)求的處理。用戶的請(qǐng)求數(shù)據(jù)包含在 HttpServletRequest對(duì)象里,而用戶的Action類無(wú)需訪問(wèn)HttpServletRequest對(duì)象。攔截器負(fù)責(zé)將 HttpServletRequest里的請(qǐng)求數(shù)據(jù)解析出來(lái),并傳給業(yè)務(wù)邏輯組件Action實(shí)例。
3.業(yè)務(wù)控制器
  正如從圖3.19所看到的,業(yè)務(wù)控制器組件就是用戶實(shí)現(xiàn)Action類的實(shí)例,Action類里通常包含了一個(gè)execute方法,該方法返回一個(gè)字符串——該字符串就是一個(gè)邏輯視圖名,當(dāng)業(yè)務(wù)控制器處理完用戶請(qǐng)求后,根據(jù)處理結(jié)果不同,execute方法返回不同字符串   ——每個(gè)字符串對(duì)應(yīng)一個(gè)視圖名。

程序員開(kāi)發(fā)出系統(tǒng)所需要的業(yè)務(wù)控制器后,還需要配置Struts 2的Action,即需要配置Action的如下三個(gè)部分定義:

—  Action所處理的URL。

—  Action組件所對(duì)應(yīng)的實(shí)現(xiàn)類。

—  Action里包含的邏輯視圖和物理資源之間的對(duì)應(yīng)關(guān)系。

每個(gè)Action都要處理一個(gè)用戶請(qǐng)求,而用戶請(qǐng)求總是包含了指定URL。當(dāng)Filter Dispatcher攔截到用戶請(qǐng)求后,根據(jù)請(qǐng)求的URL和Action處理URL之間的對(duì)應(yīng)關(guān)系來(lái)處理轉(zhuǎn)發(fā)。
4.Struts 2的模型組件
  實(shí)際上,模型組件已經(jīng)超出了MVC框架的覆蓋范圍。對(duì)于Struts 2框架而言,通常沒(méi)有為模型組件的實(shí)現(xiàn)提供太多的幫助。

文本框: 圖3.20 控制器調(diào)用模型組件Java EE應(yīng)用里的模型組件,通常指系統(tǒng)的業(yè)務(wù)邏輯組件。而隱藏在系統(tǒng)的業(yè)務(wù)邏輯組件下面的,可能還包含了DAO、領(lǐng)域?qū)ο蟮冉M件。

通常,MVC框架里的業(yè)務(wù)控制器會(huì)調(diào)用模型組件的方法來(lái)處理用戶請(qǐng)求。也就是說(shuō),業(yè)務(wù)邏輯控制器不會(huì)對(duì)用戶請(qǐng)求進(jìn)行任何實(shí)際處理,用戶請(qǐng)求最終由模型組件負(fù)責(zé)處理。業(yè)務(wù)控制器只是中間負(fù)責(zé)調(diào)度的調(diào)度器,這也是稱Action為控制器的原因。 



圖3.20顯示了這種處理流程。

提示  在圖3.20中看到Action調(diào)用業(yè)務(wù)邏輯組件的方法。當(dāng)控制器需要獲得業(yè)務(wù)邏輯組件實(shí)例時(shí),通常并不會(huì)直接獲取業(yè)務(wù)邏輯組件實(shí)例,而是通過(guò)工廠模式來(lái)獲得業(yè)務(wù)邏輯組件的實(shí)例;或者利用其他IoC容器(如Spring容器)來(lái)管理業(yè)務(wù)邏輯組件的實(shí)例。
5.Struts 2的視圖組件
  Struts 2已經(jīng)改變了Struts 1只能使用JSP作為視圖技術(shù)的現(xiàn)狀,Struts 2允許使用其他的模板技術(shù),如FreeMarker、Velocity作為視圖技術(shù)。

當(dāng)Struts 2的控制器返回邏輯視圖名時(shí),邏輯視圖并未與任何的視圖技術(shù)關(guān)聯(lián),僅僅是返回一個(gè)字符串,該字符串作為邏輯視圖名。

當(dāng)我們?cè)趕truts.xml文件中配置 Action時(shí),不僅需要指定Action的name屬性和class屬性,還要為Action元素指定系列result子元素,每個(gè)result子元素定義一個(gè)邏輯視圖和物理視圖之間的映射。前面所介紹的應(yīng)用都使用了JSP技術(shù)作為視圖,故配置result子元素時(shí)沒(méi)有指定type屬性,默認(rèn)使用JSP 作為視圖資源。

如果需要在Struts 2中使用其他視圖技術(shù),則可以在配置result子元素時(shí),指定相應(yīng)的type屬性即可。例如,如果需要使用FreeMarker,則為result指定值為freemarker的type屬性;如果想使用Velocity模板技術(shù)作為視圖資源,則為result指定值為velocity的type屬性……
6.Struts 2的運(yùn)行流程
  經(jīng)過(guò)上面介紹,我們發(fā)現(xiàn)Struts 2框架的運(yùn)行流程非常類似于WebWork框架的流程。

提示  在Struts 2的官方站點(diǎn),我們可以找到如下說(shuō)法:Essentially,Struts 2.0 is the technical equivalent of WebWork 2.3。Aside from the package and property renaming,it isn't much different than,say,migrating from WebWork 2.1 to 2.2——意思是說(shuō):Struts 2.0技術(shù)等同于WebWork 2.3框架,除了包和屬性被改名外。從WebWork 2.2遷移到Struts 2不會(huì)比從WebWork 2.1遷移到WebWork 2.2更復(fù)雜。

這里我們可以看到,Struts 2其實(shí)就是WebWork 2.2的升級(jí)版,這也就不難理解:為什么WebWork和Struts 2如此相似!

因此,Struts 2的運(yùn)行流程與WebWork的運(yùn)行流程完全相同,讀者可以參看圖1.8來(lái)了解Struts 2的運(yùn)行流程。
[url]
http://www.17xie.com/read-100729.html[/url]好東西很多,需要的都快去!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
struts2的運(yùn)行機(jī)制
Struts控制器組件
Struts框架在小區(qū)物業(yè)管理系統(tǒng)中的應(yīng)用
STRUTS 2 概述(節(jié)選)
STRUTS2核心控制器:FilterDispatcher
mayong--淺析struts 體系結(jié)構(gòu)與工作原理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服