SpringMVC 常見面試真題分享,助力金三銀四後半段衝刺!

無敵天驕發表於2021-04-01

一、什麼是 SpringMvc?

SpringMvc 是 spring 的一個模組,基於 MVC 的一個框架,無需中間整合層來整合。

二、Spring MVC 的優點:

  1. 它是基於元件技術的.全部的應用物件,無論控制器和檢視,還是業務物件之類的都是 java元件。並且和 Spring 提供的其他基礎結構緊密整合。
  2. 不依賴於 Servlet API(目標雖是如此,但是在實現的時候確實是依賴於 Servlet 的)
  3. 可以任意使用各種檢視技術,而不僅僅侷限於 JSP
  4. 支援各種請求資源的對映策略
  5. 它應是易於擴充套件的

三、SpringMVC 工作原理?

  1. 客戶端傳送請求到  DispatcherServlet
  2. DispatcherServlet 查詢  handlerMapping 找到處理請求的  Controller
  3. Controller 呼叫業務邏輯後,返回  ModelAndView
  4. DispatcherServlet 查詢  ModelAndView,找到指定檢視
  5. 檢視將結果返回到客戶端

四、SpringMVC 流程?

  1. 使用者傳送請求至前端控制器  DispatcherServlet
  2. DispatcherServlet 收到請求呼叫  HandlerMapping 處理器對映器。
  3. 處理器對映器找到具體的處理器(可以根據 xml 配置、註解進行查詢),生成處理器物件及處理器攔截器(如果有則生成)一併返回給  DispatcherServlet
  4. DispatcherServlet 呼叫  HandlerAdapter 處理器介面卡。
  5. HandlerAdapter 經過適配呼叫具體的處理器( Controller,也叫後端控制器)。
  6. Controller 執行完成返回  ModelAndView
  7. HandlerAdapter 將 controller 執行結果  ModelAndView 返回給  DispatcherServlet
  8. DispatcherServlet 將  ModelAndView 傳給  ViewReslover 檢視解析器。
  9. ViewReslover 解析後返回具體 View。
  10. DispatcherServlet 根據 View 進行渲染檢視(即將模型資料填充至檢視中)。
  11. DispatcherServlet 響應使用者。

五、如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?

  1. springmvc 的入口是一個 servlet 即前端控制器,而 struts2 入口是一個 filter 過濾器。
  2. springmvc 是基於方法開發(一個 url 對應一個方法),請求引數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2 是基於類開發,傳遞引數是透過類的屬性,只能設計為多例。
  3. Struts 採用值棧儲存請求和響應的資料,透過 OGNL 存取資料,springmvc 透過引數解析器是將 request 請求內容解析,並給方法形參賦值,將資料和檢視封裝成  ModelAndView 物件,最後又將  ModelAndView 中的模型資料透過 reques 域傳輸到頁面。Jsp 檢視解析器預設使用 jstl。

六、@RequestMapping 註解用在類上面有什麼作用?

是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

七、SpringMVC 怎麼樣設定重定向和轉發的?

在返回值前面加 "forward:"就可以讓結果轉發,譬如 "forward:user.do?name=method4"

在返回值前面加 "redirect:"就可以讓返回值重定向,譬如 "redirect:

八、SpringMVC 怎麼和 AJAX 相互呼叫的?

透過 Jackson 框架就可以把 Java 裡面的物件直接轉化成 Js 可以識別的 Json 物件。

具體步驟如下 :

  1. 加入  Jackson.jar
  2. 在配置檔案中配置 json 的對映
  3. 在接受 Ajax 方法裡面可以直接返回 Object,List 等,但方法前面要加上  @ResponseBody 註解

九、SpringMVC 裡面攔截器是怎麼寫的

有兩種寫法,一種是實現介面,另外一種是繼承介面卡類,然後在 SpringMVC 的配置檔案中配置攔截器即可:

<!-- 配置 SpringMvc 的攔截器 --><mvc:interceptors> 
    <!-- 配置一個攔截器的 Bean 就可以了 預設是對所有請求都攔截 --> 
    <bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean> 
    <!-- 只針對部分請求攔截 --> 
    <mvc:interceptor> 
        <mvc:mapping path="/modelMap.do" /> 
        <bean class="com.et.action.MyHandlerInterceptorAdapter" /> 
    </mvc:interceptor></mvc:interceptors>

十、講下 SpringMVC 的執行流程

系統啟動的時候根據配置檔案建立 spring 的容器, 首先是傳送 http 請求到核心控制器  disPatherServlet,spring 容器透過對映器去尋找業務控制器,使用介面卡找到相應的業務類,在進業務類時進行資料封裝,在封裝前可能會涉及到型別轉換,執行完業務類後使用  ModelAndView 進行檢視轉發,資料放在  model 中,用  map 傳遞資料進行頁面顯示。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69964492/viewspace-2766190/,如需轉載,請註明出處,否則將追究法律責任。

相關文章