又是一個常問的面試題,真是面試一次長一次見識。html
那咱們先就從原理出發:前端
springMVC 原理(見下圖):面試
一、 用戶發送請求至前端控制器 DispatcherServlet。spring
二、 DispatcherServlet 收到請求調用 HandlerMapping處理器映射器。後端
三、 處理器映射器找到具體的處理器(能夠根據 xml 配置、註解進行查找),生成處理器對象及處理器攔截器(若是有則生成)一併返回給DispatcherServlet。app
四、 DispatcherServlet 調用 HandlerAdapter 處理器適配器。框架
五、 HandlerAdapter 通過適配調用具體的處理器(Controller,也叫後端控制器)。學習
六、 Controller 執行完成返回 ModelAndView。url
七、 HandlerAdapter 將 controller 執行結果 ModelAndView 返回給 DispatcherServlet。spa
八、 DispatcherServlet 將 ModelAndView 傳給 ViewReslover視圖解析器。
九、 ViewReslover 解析後返回具體 View。
十、DispatcherServle 根據 View 進行渲染視圖(即將模型數據填充至視圖中)。
十一、 DispatcherServlet 響應用戶。
那麼下面在說下 Struts2 的原理(以下圖):
詳情參考:Struts2 的工做原理(圖解)詳解 (寫的真的很不錯本菜鳥又學習了!)
框架原理的這種東西本菜鳥不理解的,慢慢學習吧。
瞭解完原理下面開始總結兩者區別:
一、Struts2 是類級別的攔截, 一個類對應一個 reques t上下文,SpringMVC 是方法級別的攔截。
二、Struts2 的核心是基於一個過濾器即 StrutsPreparedAndExcuteFilter
SpringMvc的核心是基於一個 Servlet 即 DispatcherServlet前端控制器
...................
(更多細節看下博客)
SpringMVC 與 Struts2 區別與比較總結 - CSDN博客
水平有限,如有問題請留言交流!
互相學習,共同進步:) 轉載請註明出處謝謝!