SpringMVC知識點
- 什麼是SpringMVC?
(1) SpringMVC是Spring全家桶中的一個模塊,基於MVC框架,無需中間整合層來整合
- SpringMVC的優點
(1) 基於組件技術。全部的應用對象,無論控制器和視圖,還是業務對象之類的都是java組件。並且和Spring提供的其他基礎結構緊密集成
(2) 可以任意使用各種視圖技術,而不僅僅侷限於JSP
(3) 支持各種請求資源的映射策略
(4) 易於擴展
- SpringMVC工作原理
(1) 客戶端發送請求到DispatcherServlet
(2) DispatcherServlet查詢handleMaping找到處理請求的Controller
(3) Controller調用業務邏輯後,返回ModelAndView
(4) DispatcherServlet查詢ModelAndView,找到指定視圖
(5) 視圖將結果返回到客戶端
- SpringMVC流程(重點建議直接背會)
(1) 用戶發送請求至前端控制器DispacherServlet
(2) DispacherServlet收到請求調用HandlerMapping處理器映射器
(3) 處理器映射器找到具體的處理器(可根據xml、註解進行查找),生成處理器對象
(4) DispacherServlet調用HandlerAdapter處理器適配器
(5) HandlerAdapter經過適配調用具體的處理器(Controller,也叫後端控制器)
(6) Controller執行返回ModelAndView
(7) HandlerAdapter將Coontroller執行的結果ModelAndView返回給DispacherServlet
(8) DispacherServlet將ModelAndView傳給視圖解析器ViewResolver
(9) ViewResolver解析後傳給具體的View
(10) DispacherSelver根據View進行視圖渲染
(11) DispacherServlet相應用戶
- SpringMVC的控制器是不是單例模式?如果是,有什麼問題?如何解決?
(1) 是單例模式及,所以在多線程訪問的時候有線程安全問題,不要使用同步,會影響性能,解決方案是在控制器中不能寫字段
- @RequestMapping註解用在類上有什麼作用?
(1) 是一個用來處理請求地址映射的註解,可用在類上或者方法上。用在類上,表示類中所有方法都以該地址作爲父路徑
- SpringMVC和AJAX如何實現相互調用的?通過jackson框架就可以把java裏面的對象直接轉化爲js可以識別的JSON對象,具體步驟如下:
(1) 加入Jackson.jar
(2) 在配置文件中配置json的映射
(3) 在接受AJAX方法裏面可以直接返回Object、list等,但是方法前面要加上@ResponseBody註解
- 談談SpringMVC的執行流程
(1) 系統在啓動的時候根據配置文件創建Spring的容器,首先是發送Http請求到核心控制器DispacherServlet,Spring容器通過映射器去尋找業務控制器,使用適配器找到相應的業務類,在進業務類時進行數據封裝,在封裝前可能涉及到類型轉換,執行完業務類使用ModelAndView進行視圖轉發,數據放在model中,用map傳遞數據進行頁面展示