大部分的Java應(yīng)用都是基于Web的,作為輕量級(jí)的JavaEE框架,Spring也提供了自己的Web層的展現(xiàn)技術(shù),一個(gè)優(yōu)秀的MVC框架—— Spring MVC。與其它的Web框架相比Spring的MVC框架在可擴(kuò)展性和靈活性上有很大提高。但是相對(duì)要
復(fù)雜很多。Spring的MVC框架主要由DispatcherServlet、處理器映射、處理器、視圖解析器、視圖組成。以DI(筆者更喜歡DI這個(gè)概念,覺得IoC表達(dá)沒有DI清晰)為核心的Spring MVC也有的技術(shù)人員認(rèn)為設(shè)計(jì)太復(fù)雜,有過度設(shè)計(jì)的嫌疑。
不過它確實(shí)提供了一個(gè)接近于完美的Web框架,或許這也正是Rod Johnson先生的初衷吧。下圖是Spring MVC的原理框圖:
整個(gè)處理過程從一個(gè)HTTP請(qǐng)求開始:
1)DispatcherServlet接收到請(qǐng)求后,根據(jù)對(duì)應(yīng)配置文件中配置的處理器映射,找到對(duì)應(yīng)的處理器映射項(xiàng)(HandlerMapping),根據(jù)配置的映射規(guī)則,找到對(duì)應(yīng)的處理器(Handler)。
2)調(diào)用相應(yīng)處理器中的處理方法,處理該請(qǐng)求,處理器處理結(jié)束后會(huì)將一個(gè)ModelAndView類型的數(shù)據(jù)傳給DispatcherServlet,這其中包含了處理結(jié)果的視圖和視圖中要使用的數(shù)據(jù)。
3)DispatcherServlet根據(jù)得到的ModelAndView中的視圖對(duì)象,找到一個(gè)合適的ViewResolver(視圖解析器),根據(jù)視圖解析器的配置,DispatcherServlet將視圖要顯示的數(shù)據(jù)傳給對(duì)應(yīng)的視圖,最后給瀏覽器構(gòu)造一個(gè)HTTP響應(yīng)。
DispatcherServlet是整個(gè)Spring MVC的核心。它負(fù)責(zé)接收HTTP請(qǐng)求組織協(xié)調(diào)Spring MVC的各個(gè)組成部分。其主要工作有以下三項(xiàng):
1)截獲符合特定格式的URL請(qǐng)求。
2)初始化DispatcherServlet上下文對(duì)應(yīng)的WebApplicationContext,并將其與業(yè)務(wù)層、持久化層的
WebApplicationContext建立關(guān)聯(lián)。
3)初始化Spring MVC的各個(gè)組成組件,并裝配到DispatcherServlet中。
復(fù)雜很多。Spring的MVC框架主要由DispatcherServlet、處理器映射、處理器、視圖解析器、視圖組成。以DI(筆者更喜歡DI這個(gè)概念,覺得IoC表達(dá)沒有DI清晰)為核心的Spring MVC也有的技術(shù)人員認(rèn)為設(shè)計(jì)太復(fù)雜,有過度設(shè)計(jì)的嫌疑。
不過它確實(shí)提供了一個(gè)接近于完美的Web框架,或許這也正是Rod Johnson先生的初衷吧。下圖是Spring MVC的原理框圖:

整個(gè)處理過程從一個(gè)HTTP請(qǐng)求開始:
1)DispatcherServlet接收到請(qǐng)求后,根據(jù)對(duì)應(yīng)配置文件中配置的處理器映射,找到對(duì)應(yīng)的處理器映射項(xiàng)(HandlerMapping),根據(jù)配置的映射規(guī)則,找到對(duì)應(yīng)的處理器(Handler)。
2)調(diào)用相應(yīng)處理器中的處理方法,處理該請(qǐng)求,處理器處理結(jié)束后會(huì)將一個(gè)ModelAndView類型的數(shù)據(jù)傳給DispatcherServlet,這其中包含了處理結(jié)果的視圖和視圖中要使用的數(shù)據(jù)。
3)DispatcherServlet根據(jù)得到的ModelAndView中的視圖對(duì)象,找到一個(gè)合適的ViewResolver(視圖解析器),根據(jù)視圖解析器的配置,DispatcherServlet將視圖要顯示的數(shù)據(jù)傳給對(duì)應(yīng)的視圖,最后給瀏覽器構(gòu)造一個(gè)HTTP響應(yīng)。
DispatcherServlet是整個(gè)Spring MVC的核心。它負(fù)責(zé)接收HTTP請(qǐng)求組織協(xié)調(diào)Spring MVC的各個(gè)組成部分。其主要工作有以下三項(xiàng):
1)截獲符合特定格式的URL請(qǐng)求。
2)初始化DispatcherServlet上下文對(duì)應(yīng)的WebApplicationContext,并將其與業(yè)務(wù)層、持久化層的
WebApplicationContext建立關(guān)聯(lián)。
3)初始化Spring MVC的各個(gè)組成組件,并裝配到DispatcherServlet中。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
