6. 數(shù)據(jù)處理
處理提交數(shù)據(jù)
-
提交的域名稱和處理方法的參數(shù)一致
提交數(shù)據(jù):http://localhost:8080/user/t1?name=huba
處理方法:
public String test1(String name, Model model){ //1.接受前端參數(shù) System.out.println("接受到前端參數(shù)"); //2.將返回結(jié)果傳遞給前端 model.addAttribute("msg",name); //3.頁面跳轉(zhuǎn) return "test"; }
-
提交的域名稱和處理方法的參數(shù)名不一致
提交數(shù)據(jù):http://localhost:8080/user/t1?username=huba
處理方法:
//@RequestParam("username"):username 域名稱 @GetMapping("/t1") public String test1(@RequestParam("username") String name, Model model){ //1.接受前端參數(shù) System.out.println("接受到前端參數(shù)"); //2.將返回結(jié)果傳遞給前端 model.addAttribute("msg",name); //3.頁面跳轉(zhuǎn) return "test"; }
-
提交的是一個(gè)對(duì)象
要求提交的表單域和對(duì)象的屬性名一致玄叠,參數(shù)使用對(duì)象即可吹菱。
-
實(shí)體類
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private int age; }
-
提交數(shù)據(jù):http://localhost:8080/user/t2?name=huba&id=1&age=15
-
處理方法:
@GetMapping("/t2") public String test2(User user, Model model){ System.out.println("接受到前端參數(shù)"); model.addAttribute("msg",user.toString()); return "test"; }
注意點(diǎn):
匹配對(duì)象中的字段名披摄;名字一致必須一致宛裕,否則為null。
數(shù)據(jù)顯示到前端
- 通過ModelAndView
- 通過ModelMap
- 通過Model
對(duì)比
對(duì)新手而言簡單來說使用區(qū)別就是:
- Model:只有寥寥幾個(gè)方法箫津,適合存儲(chǔ)數(shù)據(jù)侨糟,簡化版
- ModelMap:繼承了LinkedHashMap
- ModelAndView:除了可以存儲(chǔ)數(shù)據(jù),也可以進(jìn)行設(shè)置返回的邏輯視圖涨缚,進(jìn)行控制展示層的跳轉(zhuǎn)。
亂碼問題
測試步驟:
-
我們可以再首頁編寫一個(gè)提交的表單
<form action="/e/t1" method="post"> <input type="text" name="name"> <input type="submit"> </form>
-
后臺(tái)編寫對(duì)應(yīng)的處理類
@PostMapping("/e/t1") public String test1(String name, Model model){ model.addAttribute("msg",name); return "test"; }
輸入中文測試策治,發(fā)現(xiàn)亂碼
SpringMVC給我們提供了一個(gè)過濾器脓魏,可以在web.xml中配置,修改了xml文件需要重啟服務(wù)器通惫!
<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>