全球短訊!Spring—Spring MVC 全解析

2023-02-07 11:13:53 來源:51CTO博客


(資料圖)

處理流程

SpringMVC 處理流程.PNG

用戶發送請求至前端控制器 DispatcherServlet;DispatcherServlet 收到請求調用 HandlerMapping 處理器映射器;處理器映射器找到具體的處理器(可以根據 xml 配置、注解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一并返回給 DispatcherServlet;DispatcherServlet 調用 HandlerAdapter 處理器適配器;HandlerAdapter 經過適配調用具體的處理器(Controller,也叫后端控制器);Controller 執行完成返回 ModelAndView;HandlerAdapter 將 Controller 執行結果 ModelAndView 返回給 DispatcherServlet;DispatcherServlet 將 ModelAndView 傳給 ViewReslover 視圖解析器;ViewReslover 解析后返回具體 View;DispatcherServlet 根據 View 進行渲染視圖(即將模型數據填充至視圖中);DispatcherServlet 響應用戶。

常用注解

基本注解

@RequestMapping:給控制器方法綁定一個 uri;@ResponseBody:將 Java 對象轉成 json,并且發送給客戶端;@RequestBody:將客戶端請求過來的 json 轉成 Java 對象;@RequestParam:當表單參數和方法形參名字不一致時,做一個名字映射;@PathVarible:用于獲取 uri 中的參數,比如 user/1 中 1 的值。

Rest風格的新api

@RestController:相當于 @Controlle r+ @ResponseBody;@GetMapping:還包括 @DeleteMapping、@PostMapping、@PutMapping 等相當于 @RequestMapping 加對應的 http 請求方法;

其他注解

@SessionAttribute:聲明將什么模型數據存入session;@CookieValue:獲取 cookie 值;@ModelAttribute:將方法返回值存入 model 中;@HeaderValue:獲取請求頭中的值。

使用技巧

中文亂碼

通過配置 Spring MVC 字符編碼過濾器來解決Post 請求中文亂碼的問題,在 web.xml 中添加:

    CharacterEncodingFilter    org.springframework.web.filter.CharacterEncodingFilter            encoding                utf-8        CharacterEncodingFilter    /*

文件上傳

引入jar包: commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar;配置xml:
控制器兼容:
@RequestMapping("/upload")public void upload(@RequestParam("file") MultipartFile file) throws Exception {    System.out.println(file.getOriginalFilename());}

標簽: 文件上傳 編碼格式 請求方法

上一篇:
下一篇: