1. 接收请求参数
1.1 传统传参
1.1.1 传入的参数名与形参相同
直接参数名传
http://localhost:8080/user/t3?name=zhangsan
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t1")
public String test1(String name) {
//前端接收参数
System.out.println("接收的参数为:"+name);
return "hello";
}
}
1.1.2 传入的参数名与形参不相同
@RequestParam:规定前端用什么参数传入
http://localhost:8080/user/t3?username=zhangsan
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t2")
public String test2(@RequestParam("username") String name) {
//前端接收参数
System.out.println("接收的参数为:"+name);
return "hello";
}
}
1.1.3 传入的参数为对象
http://localhost:8080/user/t3?id=1&name=zhangsan&pwd=123456
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t3")
public String test3(User user) {
//前端接收参数
System.out.println("接收的参数为:"+user);
return "hello";
}
}
1.2 Restful风格
1.2.1 传入的参数必须与形参相同
@PathVariable:传入的参数必须与形参相同
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t4/{name}")
public String test4(@PathVariable String name) {
//前端接收参数
System.out.println("接收的参数为:"+name);
return "hello";
}
}
1.2.2 传入的参数为对象
http://localhost:8080/user/t3?id=1&name=zhangsan&pwd=123456
跟传统模式相同
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t3")
public String test3(User user) {
//前端接收参数
System.out.println("接收的参数为:"+user);
return "hello";
}
}
2. 数据回显
2.1 ModelAndView
@RequestMapping("/m1")
public String t4(ModelAndView modelAndView) {
modelAndView.addObject("msg","m2");
return "hello";
}
2.2 ModelMap
Mode1Map:继承了LinkedHashMap,所以他拥有LinkedHashMap的全部功能!
@RequestMapping("/m2")
public String t4(ModelMap map) {
map.addAttribute("msg","m2");
return "hello";
}
2.3 Model
Model:精简版(大部分情况,我们都直接使用Mode7)
@RequestMapping("/m3")
public String hello(Model model) {
model.addAttribute("msg","model");
return "hello";
}
对比
- Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
- ModelMap继承了LinkedMap ,除了实现了自身的一些方法,同样的继承LinkedMap 的方法和特性;
- ModelAndview可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。
内容参考:https://www.bilibili.com/video/BV1aE41167Tu
仅用于学习!