雖然用了很長時間的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來決定哪一個頁面的控制器進行處理并把請求委托給它禁谦,在由HandlerMapping將請求映射為HandlerExecutionChain對象(包含Handler處理器對象(頁面控制器)招驴,多個HandlerInterceptor對象即攔截器),在返回給DispatcherServlet枷畏,DispatcherServlet在次發(fā)送請求給HandlerAdapter,HandlerAdapter將處理器包裝為適配器虱饿,調(diào)用處理器相應(yīng)功能處理方法拥诡,Handler返回ModelAnView給HandlerAdapter,HandlerAdapter發(fā)送給DispatcherServlet進行視圖的解析(ViewResolver)氮发,ViewResolver將邏輯視圖解析為具體的視圖渴肉,返回給DispatcherServlet,在進行視圖的渲染(View)爽冕,返回給DispatcherServlet仇祭,最后通過DispatcherServlet將視圖返回給用戶。
3.分工職責
? ? 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ā),職責鮮明礁苗,分工明確
? ? ? ? 2.AOP的很好支持,方便面向切面編程
? ? ? ? 3.對主流的框架提供了很好的集成支持
? ? ? ? 4.Spring屬于低侵入徙缴,代碼污染極低