Java經典面試題匯總:Spring MVC
1. 什麼是Spring MVC ?
Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供瞭構建WEB 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發框架,該框架通過把Model,View,Controller分離,將web層進行職責解耦,把復雜的web應用分成邏輯清晰的幾部分,簡化瞭開發。
2. Spring MVC 有哪些組件?
- 前置控制器 DispatcherServlet。
- 映射控制器 HandlerMapping。
- 處理器 Controller。
- 模型和視圖 ModelAndView。
- 視圖解析器 ViewResolver。
3. 說一下 Spring MVC 運行流程?
(1)用戶發送請求至前端控制器DispatcherServlet;
(2)DispatcherServlet收到請求後,調用HandlerMapping處理器映射器,請求獲取Handler;
(3)處理器映射器根據請求url找到具體的處理器Handler,生成處理器對象及處理器攔截器(如果有則生成),一並返回給DispatcherServlet;
(4)DispatcherServlet 調用 HandlerAdapter處理器適配器,請求執行Handler;
(5)HandlerAdapter 經過適配調用 具體處理器進行處理業務邏輯;
(6)Handler執行完成返回ModelAndView;
(7)HandlerAdapter將Handler執行結果ModelAndView返回給DispatcherServlet;
(8)DispatcherServlet將ModelAndView傳給ViewResolver視圖解析器進行解析;
(9)ViewResolver解析後返回具體View;
(10)DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)
(11)DispatcherServlet響應用戶。
4. Spring MVC的優點:
- 它是基於組件技術的。全部的應用對象,無論控制器和視圖,還是業務對象之類的都是 java組件.並且和Spring提供的其他基礎結構緊密集成
- 不依賴於Servlet API(目標雖是如此,但是在實現的時候確實是依賴於Servlet的)
- 可以任意使用各種視圖技術,而不僅僅局限於JSP
- 支持各種請求資源的映射策略
5. @RequestMapping 的作用是什麼?
將 http 請求映射到相應的類/方法上。
6. 如果在攔截請求中,我想攔截get方式提交的方法,怎麼配置?
可以在@RequestMapping註解裡面加上method=RequestMethod.GET,或者使用@GetMapping。
7. SpringMVC常用的註解有哪些?
@RequestMapping:用於處理請求 url 映射的註解,可用於類或方法上。用於類上,則表示類中的所有響應請求的方法都是以該地址作為父路徑。
@RequestBody:註解實現接收http請求的json數據,將json轉換為java對象。
@ResponseBody:註解實現將conreoller方法返回對象轉化為json對象響應給客戶。
8. SpingMvc中的控制器的註解一般用那個,有沒有別的註解可以替代?
用@Conntroller註解,表示是表現層,不能用用別的註解代替。
9. Spring MVC和Struts2的區別有哪些?
- springmvc的入口是一個servlet即前端控制器(DispatchServlet),而struts2入口是一個filter過慮器(StrutsPrepareAndExecuteFilter)。
- springmvc是基於方法開發(一個url對應一個方法),請求參數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞參數是通過類的屬性,隻能設計為多例。
- Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據,springmvc通過參數解析器是將request請求內容解析,並給方法形參賦值,將數據和視圖封裝成ModelAndView對象,最後又將ModelAndView中的模型數據通過reques域傳輸到頁面。Jsp視圖解析器默認使用jstl。
10. 怎麼樣在方法裡面得到Request,或者Session
在方法的形參中聲明request,SpringMvc就會自動把request對象傳入
推薦閱讀:
- Java面試題沖刺第七天–Spring框架1
- SpringMVC的詳細架構你瞭解嘛
- SpringMVC執行步驟、Model的使用詳解
- Java中Mybatis,SpringMVC,Spring的介紹及聯系
- 讓你五分鐘徹底理解Spring MVC