考察點:設計模式前端
①客戶端的全部請求都交給前端控制器DispatcherServlet來處理,它會負責調用系統的其餘模塊來真正處理用戶的請求。
② DispatcherServlet收到請求後,將根據請求的信息(包括URL、HTTP協議方法、請求頭、請求參數、Cookie等)以及HandlerMapping的配置找處處理該請求的Handler(任何一個對象均可以做爲請求的Handler)。
③在這個地方Spring會經過HandlerAdapter對該處理器進行封裝。
④ HandlerAdapter是一個適配器,它用統一的接口對各類Handler中的方法進行調用。
⑤ Handler完成對用戶請求的處理後,會返回一個ModelAndView對象給DispatcherServlet,ModelAndView顧名思義,包含了數據模型以及相應的視圖的信息。
⑥ ModelAndView的視圖是邏輯視圖,DispatcherServlet還要藉助ViewResolver完成從邏輯視圖到真實視圖對象的解析工做。
⑦ 當獲得真正的視圖對象後,DispatcherServlet會利用視圖對象對模型數據進行渲染。
⑧ 客戶端獲得響應,多是一個普通的HTML頁面,也能夠是XML或JSON字符串,還能夠是一張圖片或者一個PDF文件。spring
考察點:spring編程
一、用戶發送請求時會先從DispathcherServler的doService方法開始,在該方法中會將ApplicationContext、localeResolver、themeResolver等對象添加到request中,緊接着就是調用doDispatch方法。設計模式
二、進入該方法後首先會檢查該請求是不是文件上傳的請求(校驗的規則是是不是post而且contenttType是否爲multipart/爲前綴)即調用的是checkMultipart方法;若是是的將request包裝成MultipartHttpServletRequest。安全
三、而後調用getHandler方法來匹配每一個HandlerMapping對象,若是匹配成功會返回這個Handle的處理鏈HandlerExecutionChain對象,在獲取該對象的內部其實也獲取咱們自定定義的攔截器,並執行了其中的方法。mvc
四、執行攔截器的preHandle方法,若是返回false執行afterCompletion方法並理解返回app
五、經過上述獲取到了HandlerExecutionChain對象,經過該對象的getHandler()方法得到一個object經過HandlerAdapter進行封裝獲得HandlerAdapter對象。spring-boot
六、該對象調用handle方法來執行Controller中的方法,該對象若是返回一個ModelAndView給DispatcherServlet。post
七、DispatcherServlet藉助ViewResolver完成邏輯試圖名到真實視圖對象的解析,獲得View後DispatcherServlet使用這個View對ModelAndView中的模型數據進行視圖渲染。spa
考察點:spring
總的來講,Spring 就像一個你們族,有衆多衍生產品例如 Boot,Security,JPA等等。但他們的基礎都是Spring 的 IOC 和 AOP,IOC提供了依賴注入的容器,而AOP解決了面向切面的編程,而後在此二者的基礎上實現了其餘衍生產品的高級功能;由於 Spring 的配置很是複雜,各類xml,properties處理起來比較繁瑣。因而爲了簡化開發者的使用,Spring社區創造性地推出了Spring Boot,它遵循約定優於配置,極大下降了Spring使用門檻,但又不失Spring本來靈活強大的功能。
考察點:spring mvc
一、XML配置起來有時候冗長,此時註解多是更好的選擇,如jpa的實體映射;註解在處理一些不變的元數據時有時候比XML方便的多,好比springmvc的數據綁定,若是用xml寫的代碼會多的多;
二、註解最大的好處就是簡化了XML配置;其實大部分註解必定肯定後不多會改變,因此在一些中小項目中使用註解反而提供了開發效率,因此不必一頭走到黑;
三、註解相對於XML的另外一個好處是類型安全的,XML只能在運行期才能發現問題。