日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java面试——SpringMVC系列总结

發布時間:2025/3/12 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面试——SpringMVC系列总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄:

1.什么是Spring MVC?

2.Spring MVC的主要組件有哪些?

3.請描述一下Spring MVC的工作流程?

4.MVC是什么?MVC設計模式的好處有哪些

5.攔截器Interceptor與過濾器Filter有什么區別?

6.Spring MVC中常用注解有哪些?

7.Spring MVC如何設定重定向和轉發?

8.Spring MVC如何解決POST請求中文亂碼問題,GET請求又如何處理呢?


1.什么是Spring MVC?

Spring MVC是一個基于Java,實現了MVC設計模式的請求驅動類型的輕量級Web框架,通過把模型-視圖-控制器分離,將web層進行職責解耦,把復雜的web應用分成邏輯清晰的幾部分,簡化開發,減少出錯,方便組內開發人員之間的配合。

2.Spring MVC的主要組件有哪些?

  • 前端控制器 DispatcherServlet(不需要程序員開發)

? 作用:接收請求、響應結果,相當于轉發器,有了DispatcherServlet 就減少了其它組件之間的耦合度。

  • 處理器映射器HandlerMapping(不需要程序員開發)

? 作用:根據請求的URL來查找Handler

  • 處理器適配器HandlerAdapter

? 注意:在編寫Handler的時候要按照HandlerAdapter要求的規則去編寫,這樣適配器HandlerAdapter才可以正確的去執行Handler。

  • 處理器Handler(需要程序員開發)
  • 視圖解析器 ViewResolver(不需要程序員開發)

? 作用:進行視圖的解析,根據視圖邏輯名解析成真正的視圖(view)

  • 視圖View(需要程序員開發)

? View是一個接口, 它的實現類支持不同的視圖類型(jsp,freemarker,pdf等等)

3.請描述一下Spring MVC的工作流程?

  • 用戶發送請求至前端控制器DispatcherServlet;
  • DispatcherServlet收到請求后,調用HandlerMapping處理器映射器,請求獲取Handler;
  • 處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器對象(如果有則生成)一并返回給DispatcherServlet;
  • DispatcherServlet 調用 HandlerAdapter處理器適配器;
  • HandlerAdapter 經過適配調用 具體處理器(Handler,也叫后端控制器);
  • Handler執行完成返回ModelAndView;
  • HandlerAdapter將Handler執行結果ModelAndView返回給DispatcherServlet;
  • DispatcherServlet將ModelAndView傳給ViewResolver視圖解析器進行解析;
  • ViewResolver解析后返回具體View;
  • DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)
  • DispatcherServlet響應用戶。
  • 4.MVC是什么?MVC設計模式的好處有哪些

    mvc是一種設計模式(設計模式就是日常開發中編寫代碼的一種好的方法和經驗的總結)。模型(model)-視圖(view)-控制器(controller),三層架構的設計模式。用于實現前端頁面的展現與后端業務數據處理的分離。

    mvc設計模式的好處:

  • 分層設計,實現了業務系統各個組件之間的解耦,有利于業務系統的可擴展性,可維護性。
  • 有利于系統的并行開發,提升開發效率。
  • 5.攔截器Interceptor與過濾器Filter有什么區別?

  • 攔截器是springmvc框架中的對象。過濾器是servlet中的對象。
  • 攔截器對象是由框架容器創建的。過濾器對象是由tomcat創建的。
  • 攔截器側重于對請求做判斷處理的,可以截斷請求。過濾器側重于對request、response對象的屬性、參數設置值的。
  • 攔截器的執行時間有三個(控制器方法之前、控制器方法之后、請求完成之后)。過濾器執行時間只在請求之前。
  • 攔截器是對controller、動態資源進行攔截的。過濾器可以過濾所以請求(動態、靜態)。
  • 攔截器和過濾器一起執行:先執行過濾器,后面是中央調度器,再后面是攔截器,最后才是控制器方法。
  • 6.Spring MVC中常用注解有哪些?

    • @Controller

    • @RequestMapping:用來處理請求地址映射,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

    • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:分別對應@RequestMapping不同的請求方式。

    • @ResponseBody:該注解用于將Controller方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。

    • @RestController:@Controller + @ResponseBody。

    • @PathVariable:用于獲取請求路徑中的參數值。

      @RequestMapping(value = "/getInfo/{name}")public String getInfo(@PathVariable("name") String name) {} 請求地址: localhost:8080/getInfo/zhangsan
    • @RequestParam:將請求參數綁定到你控制器的方法參數上。

      @RequestMapping(value = "/getInfo")public String getInfo(@RequestParam(value = "name") String name) {} 請求地址: localhost:8080/getInfo?name=zhangsan
    • @RequestBody:需要使用POST方式提交。實現接收http請求的json數據(接收前端傳遞給后端的json字符串中的數據—請求體中的數據),將json轉換為java對象。

    7.Spring MVC如何設定重定向和轉發?

    (1)轉發:在返回值前面加 “forward:”,例如:return “forward:user.do?name=method4”;

    (2)重定向:在返回值前面加 “redirect:”,例如:return “redirect:http://www.baidu.com”;

    8.Spring MVC如何解決POST請求中文亂碼問題,GET請求又如何處理呢?

    POST:在web.xml中配置一個 CharacterEncodingFilter 字符集編碼過濾器,字符格式設置成utf-8;

    <!-- 聲明字符集過濾器 --> <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param><init-param><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param> </filter> <filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern> </filter-mapping>

    GET:

  • 修改tomcat配置文件添加編碼與工程編碼一致,如下:
  • <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  • 另外一種方法對參數進行重新編碼:
  • String userName = new String(request.getParamter(“userName”).getBytes(“ISO8859-1),“utf-8) //ISO8859-1是tomcat默認編碼,需要將tomcat編碼后的內容按utf-8編碼。

    總結

    以上是生活随笔為你收集整理的Java面试——SpringMVC系列总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。