資料內(nèi)容:
1.概述
1.1 什么是Spring MVC?簡(jiǎn)單介紹下你對(duì)Spring MVC的理
解?
Spring MVC是一個(gè)基于Java的實(shí)現(xiàn)了MVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,通過把模型-視圖-控
制器分離,將web層進(jìn)行職責(zé)解耦,把復(fù)雜的web應(yīng)用分成邏輯清晰的幾部分,簡(jiǎn)化開發(fā),減少出錯(cuò),方便
組內(nèi)開發(fā)人員之間的配合。
1.2 Spring MVC的優(yōu)點(diǎn)
(1)可以支持各種視圖技術(shù),而不僅僅局限于JSP;
(2)與Spring框架集成(如IoC容器、AOP等);
(3)清晰的角色分配:前端控制器(dispatcherServlet) , 請(qǐng)求到處理器映射(handlerMapping),處理器
適配器(HandlerAdapter), 視圖解析器(ViewResolver)。
(4) 支持各種請(qǐng)求資源的映射策略。
2.核心組件
2.1 Spring MVC的主要組件?
(1)前端控制器 DispatcherServlet(不需要程序員開發(fā))
作用:接收請(qǐng)求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間
的耦合度。
(2)處理器映射器HandlerMapping(不需要程序員開發(fā))
作用:根據(jù)請(qǐng)求的URL來(lái)查找Handler
(3)處理器適配器HandlerAdapter
注意:在編寫Handler的時(shí)候要按照HandlerAdapter要求的規(guī)則去編寫,這樣適配器HandlerAdapter才可
以正確的去執(zhí)行Handler。
(4)處理器Handler(需要程序員開發(fā))
(5)視圖解析器 ViewResolver(不需要程序員開發(fā))
作用:進(jìn)行視圖的解析,根據(jù)視圖邏輯名解析成真正的視圖(view)
(6)視圖View(需要程序員開發(fā)jsp)
View是一個(gè)接口, 它的實(shí)現(xiàn)類支持不同的視圖類型(jsp,freemarker,pdf等等)
2.2 什么是DispatcherServlet
Spring的MVC框架是圍繞DispatcherServlet來(lái)設(shè)計(jì)的,它用來(lái)處理所有的HTTP請(qǐng)求和響應(yīng)。
2.3 什么是Spring MVC框架的控制器?
控制器提供一個(gè)訪問應(yīng)用程序的行為,此行為通常通過服務(wù)接口實(shí)現(xiàn)??刂破鹘馕鲇脩糨斎氩⑵滢D(zhuǎn)換為一
個(gè)由視圖呈現(xiàn)給用戶的模型。Spring用一個(gè)非常抽象的方式實(shí)現(xiàn)了一個(gè)控制層,允許用戶創(chuàng)建多種用途的控
制器。
2.4 Spring MVC的控制器是不是單例模式,如果是,有什么
問題,怎么解決?
是單例模式,所以在多線程訪問的時(shí)候有線程安全問題,不要用同步,會(huì)影響性能的,解決方案是在控制器
里面不能寫字段。
3.工作原理
3.1 Spring MVC工作原理
(1)客戶端發(fā)送請(qǐng)求到DispatcherServlet
(2)DispatcherServlet查詢handlerMapping找到處理請(qǐng)求的Controller
(3)Controller調(diào)用業(yè)務(wù)邏輯后,返回ModelAndView
(4)DispatcherServlet查詢ModelAndView,找到指定視圖
(5)視圖將結(jié)果返回到客戶端