日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

STRUTS2核心控制器:FilterDispatcher

 小花驢 2015-08-03

1.    struts1.x 系列中 , 所有的請(qǐng)求是通過(guò)一個(gè) servlet(ActionServlet) 來(lái)管理控制的 , Struts2.X 而是經(jīng)過(guò)一個(gè) Filter 來(lái)處理請(qǐng)求的。 Struts 2 將核心控制器設(shè)計(jì)成 Filter ,而不是一個(gè)普通 Servlet 因?yàn)樵O(shè)計(jì)者為了實(shí)現(xiàn)AOP(面向方面 編程)概念.

struts1.x 中

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
。。。
< /servlet>

Struts2.X 中

<filter>
<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern> </filter-mapping>

 

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ù)邏輯組件。 

核心控制器: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)求的Act ion實(shí)例,并不是用戶實(shí)現(xiàn)的業(yè)務(wù)控制器,而是Act ion代理 ——因?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顯示了這種處理模型。
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í)例。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多