1. 程式人生 > >Spring MVC面試整理

Spring MVC面試整理

直接 mark 如果 void struts 視圖 限制 線程安全問題 mapping

  1. Spring MVC執行過程

    1. 客戶端的請求提交到dispatcherServlet

    2. DispatcherServlet查詢一個或者多個handlermapping ,找請求的Controller

    3. DispatcherServlet將請求提交給Controller, Controller調用完畢後返回modelAndView

    4. DispatcherServlet查詢一個或多個對應的前端控制器,將modelAndView傳遞給指定的前端控制器

    5. 將渲染完的視圖返回給客戶端

  2. SpringMVC的Controller為單例的盡量不要設置屬性,而是在方法中

  3. @RequestMapping註解用在類上面代表該類方法的父路徑

  4. SpringMVC與Struts2的主要區別

    • SpringMVC的前端控制器為一個Servlet 而Struts為Filter

    • SpringMVC的Controller為單例,而Struts2的Action為多例

    • SpringMVC是通過將request中的內容解析為形參,將相應和頁面封裝為Modelandview對象,struts2是采用值棧來存儲請求和相應

  5. SpringMVC的攔截器

    • 類實現接口HandlerInterceptor,實現方法,方法分別對應方法執行前 , 執行後 , 頁面渲染後

    • 然後在配置文件中配置攔截器

    • 多個攔截器一起執行的時候preHandler按照配置的順序執行,剩下的兩個攔截器都要在preHandler返回為True時才能執行.

    • postHandler和afterCompletion按照配置順序的逆序調用

  6. json

    • @ResponseBody 輸出json

    • @requestbody 接受json 轉化為pojo

  7. 上傳文件

    • 前端規則

    • 在配置文件中配置多媒體

    • 在Controller中用MultipartFile來接受文件

  8. 三大組件和核心

    • 核心 : DispatcherServlet(前端控制器)

    • 三大組件 :

    • ViewResolver : 視圖解析器()

    • HandlerMapping : 處理器映射器組件(查找路徑名對應的Handler)

    • HandlerAdapter : 處理器適配器組件(執行Handler)

  9. 主要的註解

    • @requestmapping() // 方法的訪問路徑value,method=post 限制請求的方式為get/post

    • @Controller

    • @ResponseBody

    • @RequestBody

    • @

  10. 攔截規則

    • /* 攔截所有,包括jsp

    • / 攔截除了jsp以外的資源

  11. Controller的返回值

    • ModelAndView : 返回視圖和參數

    • Model : 在方法中傳遞Model,返回值為String , 直接return 視圖

    • Void : 什麽也不反回

  12. 重定向和請求轉發

    • 在路徑前面添加關鍵字 return ‘redirect:/item/itemlist.action‘ return ‘forward:/item/itemlist.action‘
  13. 參數綁定

    • public ModelAndView toEdit(Integer id,HttpServletRequest request,HttpServletResponse response,HttpSession session)
  14. 異常處理

    • 繼承HandlerExceptionResolver 實現對應的方法,對錯誤進行處理

    • springmvc配置<bean class="com.lyh.exception.CustomerException"></bean>

  15. 攔截提交參數中包含"type=test"字符串

    • 可以在@RequestMapping註解裏面加上params="type=test"
  16. SpringMvc用什麽對象從後臺向前臺傳遞數據的

    • 通過ModelMap對象,可以在這個對象裏面用put方法,把對象加到裏面,前臺就可以通過el表達式拿到
  17. 怎麽樣把ModelMap裏面的數據放入Session裏面

    • 可以在類上面加上@SessionAttributes註解,裏面包含的字符串就是要放入session裏面的key
  18. SpringMvc的控制器是不是單例模式,如果是,有什麽問題,怎麽解決

    • 是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器裏面不能寫字段

Spring MVC面試整理