SpringMVC-06-資料處理
阿新 • • 發佈:2020-09-06
6. 資料處理
處理提交資料
-
提交的域名稱和處理方法的引數一致
提交資料:http://localhost:8080/user/t1?name=huba
處理方法:
public String test1(String name, Model model){ //1.接受前端引數 System.out.println("接受到前端引數"); //2.將返回結果傳遞給前端 model.addAttribute("msg",name); //3.頁面跳轉 return "test"; }
-
提交的域名稱和處理方法的引數名不一致
提交資料:http://localhost:8080/user/t1?username=huba
處理方法:
//@RequestParam("username"):username 域名稱 @GetMapping("/t1") public String test1(@RequestParam("username") String name, Model model){ //1.接受前端引數 System.out.println("接受到前端引數"); //2.將返回結果傳遞給前端 model.addAttribute("msg",name); //3.頁面跳轉 return "test"; }
-
提交的是一個物件
要求提交的表單域和物件的屬性名一致,引數使用物件即可。
-
實體類
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private int age; }
-
處理方法:
@GetMapping("/t2") public String test2(User user, Model model){ System.out.println("接受到前端引數"); model.addAttribute("msg",user.toString()); return "test"; }
注意點:
匹配物件中的欄位名;名字一致必須一致,否則為null。
-
資料顯示到前端
- 通過ModelAndView
- 通過ModelMap
- 通過Model
對比
對新手而言簡單來說使用區別就是:
- Model:只有寥寥幾個方法,適合儲存資料,簡化版
- ModelMap:繼承了LinkedHashMap
- ModelAndView:除了可以儲存資料,也可以進行設定返回的邏輯檢視,進行控制展示層的跳轉。
亂碼問題
測試步驟:
-
我們可以再首頁編寫一個提交的表單
<form action="/e/t1" method="post"> <input type="text" name="name"> <input type="submit"> </form>
-
後臺編寫對應的處理類
@PostMapping("/e/t1") public String test1(String name, Model model){ model.addAttribute("msg",name); return "test"; }
-
輸入中文測試,發現亂碼
SpringMVC給我們提供了一個過濾器,可以在web.xml中配置,修改了xml檔案需要重啟伺服器!
<filter>
<filter-name>encoding</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>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>