雖然用了很長時間的SpringMVC這個框架,自己感覺運用的很6,可是近期面試卻發(fā)現(xiàn)了一個很可怕的問題,什么是SpringMVC?SpringMVC的工作原理是什么?SpringMVC的優(yōu)缺點有哪些?以前運用的時候,真的沒有考慮到這些問題!
現(xiàn)在我們來探討一下SpringMVC。
1.什么是SpringMVC?
答:Spring是一個模塊,基于MVC的一個框架。MVC是一種設(shè)計模式。M代表model;V代表view;C代表controller。M指的是模型,即dao層和service層,V指的是視圖,即jsp html 等。C指的是controller,即控制器。
2.SpringMVC的工作原理是什么?
答:用戶發(fā)送請求由前置控制器DispatcherServlet來決定哪一個頁面的控制器進(jìn)行處理并把請求委托給它,在由HandlerMapping將請求映射為HandlerExecutionChain對象(包含Handler處理器對象(頁面控制器),多個HandlerInterceptor對象即攔截器),在返回給DispatcherServlet,DispatcherServlet在次發(fā)送請求給HandlerAdapter,HandlerAdapter將處理器包裝為適配器,調(diào)用處理器相應(yīng)功能處理方法,Handler返回ModelAnView給HandlerAdapter,HandlerAdapter發(fā)送給DispatcherServlet進(jìn)行視圖的解析(ViewResolver),ViewResolver將邏輯視圖解析為具體的視圖,返回給DispatcherServlet,在進(jìn)行視圖的渲染(View),返回給DispatcherServlet,最后通過DispatcherServlet將視圖返回給用戶。
3.分工職責(zé)
? ? 3.1 前置控制器DispatcherServlet
? ? ? ? ? ? 作用:接收請求 ?返回結(jié)果
? ? 3.2 映射處理器 HandlerMapping
? ? ? ? ? 作用:根據(jù)請求映射為HandlerExecutionChain對象,查找對應(yīng)的Handler
? ? 3.3 處理器適配 HandlerAdapter
? ? ? ? ? 作用:調(diào)用處理器相對應(yīng)的處理方法,返回ViewAndModel
? ? 3.4 ?視圖解析器 ViewResolver
? ? 3.5 ?視圖的渲染 View
4.SpringMVC的優(yōu)缺點?
答:1.方便解耦,簡化開發(fā),職責(zé)鮮明,分工明確
? ? ? ? 2.AOP的很好支持,方便面向切面編程
? ? ? ? 3.對主流的框架提供了很好的集成支持
? ? ? ? 4.Spring屬于低侵入,代碼污染極低