mvc模式

用jsp也寫(xiě)過(guò)東西,也了解mvc,卻不知道Servlet+JSP+JavaBean具體是mvc中那一層,一知半解。

View:負(fù)責(zé)與用戶交互,即在界面上展示數(shù)據(jù)對(duì)象給用戶,即html,jsp

Controller:用于接受View層的請(qǐng)求,調(diào)用Model處理,再響應(yīng)給用戶; ? ?即servlet

Model:接受并處理Controller傳入的數(shù)據(jù) ?即javabean


對(duì)于非常小的項(xiàng)目,或沒(méi)有后期開(kāi)發(fā)的項(xiàng)目。mvc分層設(shè)計(jì)會(huì)給開(kāi)發(fā)帶來(lái)額外的工作量??梢钥紤]不使用mvc設(shè)計(jì)。

Struts2和MVC

Struts2是一種基于MVC的Web應(yīng)用框架,下面看看Struts2和MVC的關(guān)系。這里只是先講一下Struts2是如何跟MVC對(duì)應(yīng)的,其中一些名詞所代表的具體功能,比如前端控制器(FilterDispatcher)、動(dòng)作(Action)、結(jié)果(Result)等。在之后的學(xué)習(xí)中會(huì)不斷深入具體的細(xì)節(jié)。

控制器——FilterDispatcher

用戶請(qǐng)求首先到達(dá)前端控制器FilterDispatcher。FilterDispatcher負(fù)責(zé)根據(jù)用戶提交的URL和struts.xml中的配置,來(lái)選擇合適的動(dòng)作(Action),讓這個(gè)Action來(lái)處理用戶的請(qǐng)求。FilterDispatcher其實(shí)是一個(gè)過(guò)濾器(Filter,servlet規(guī)范中的一種web組件),它是Struts2核心包里已經(jīng)做好的類,不需要我們?nèi)ラ_(kāi)發(fā),只是要在項(xiàng)目的web.xml中配置一下即可。FilterDispatcher體現(xiàn)了J2EE核心設(shè)計(jì)模式中的前端控制器模式。

動(dòng)作——Action

在用戶請(qǐng)求經(jīng)過(guò)FilterDispatcher之后,被分發(fā)到了合適的動(dòng)作Action對(duì)象。Action負(fù)責(zé)把用戶請(qǐng)求中的參數(shù)組裝成合適的數(shù)據(jù)模型,并調(diào)用相應(yīng)的業(yè)務(wù)邏輯進(jìn)行真正的功能處理,獲取下一個(gè)視圖展示所需要的數(shù)據(jù)。Struts2 的Action,相比于別的web框架的動(dòng)作處理,它實(shí)現(xiàn)了與Servlet API的解耦,使得Action里面不需要再直接去引用和使用HttpServletRequest與HttpServletResponse等接口。 因而使得Action的單元測(cè)試更加簡(jiǎn)單,而且強(qiáng)大的類型轉(zhuǎn)換也使得我們少做了很多重復(fù)的工作。

視圖——Result

視圖結(jié)果用來(lái)把動(dòng)作中獲取到的數(shù)據(jù)展現(xiàn)給用戶。在Struts2中有多種優(yōu)秀的結(jié)果展示方式,常規(guī)的jsp,模板 freemarker、velocity,還有各種其它專業(yè)的展示方式,如圖表jfreechart、報(bào)表JasperReports、將XML轉(zhuǎn)化為 HTML的XSLT等等。而且各種視圖結(jié)果在同一個(gè)工程里面可以混合出現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容