【SpringMVC】(五)数据处理方式
数据处理方式
(一)接收前端提交数据
1.提交的是参数
1.1 提交的域名称和处理方法的参数名一致
-
1.Controller
@Controller @RequestMapping("/user") public class ReceiveDataController { @GetMapping("/t1") public String test1(String name, Model model) { //1. 接受前端参数 System.out.println("接受到前端的参数为:" + name); //2. 将返回的结果传递给前端 model.addAttribute("msg", name); //3. 视图跳转 return "test"; } } -
2.url
http://localhost:8080/user/t1?name=zkk
1.2 提交的域名称和处理方法的参数名不一致
-
需要传参加上
@RequestParam("xxx")。一般都加上,这样传参错误时,报错提示针对性更强(见下)。 -
1.Controller
@Controller @RequestMapping("/user") public class ReceiveDataController { @GetMapping("/t2") public String test2(@RequestParam("username") String name, Model model) { System.out.println("接受到前端的参数为:" + name); model.addAttribute("msg", name); return "test"; } } -
2.错误url
http://localhost:8080/user/t2?name=zkk报错

-
3.url
http://localhost:8080/user/t2?username=zkk
2.提交的是一个对象
-
这种方式要求,前端传递的参数名和对象的属性名必须一致,否则传参为null。
-
1.添加lombok依赖
-
2.User
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private int age; } -
3.Controller
@Controller @RequestMapping("/user") public class ReceiveDataController { @GetMapping("/t3") public String test3(User user) { System.out.println(user); return "test"; } } -
4.url
http://localhost:8080/user/t3?id=1&name=zkk&age=19 -
控制台打印
User(id=1, name=zkk, age=19)
(二)数据显示到前端
1.通过ModelAndView
只有控制器实现接口时,才用ModelAndView
public class ControllerTest implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//返回一个模型视图对象
ModelAndView mv = new ModelAndView();
mv.addObject("msg","ControllerTest");
mv.setViewName("test");
return mv;
}
}
2.通过ModelMap
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name,ModelMap map){
//封装要显示到视图中的数据
//相当于req.setAttribute("name",name);
model.addAttribute("name",name);
return "hello";
}
3.通过Model
@RequestMapping("/ct2/hello")
public String hello(@RequestParam("username") String name,Model model){
//封装要显示到视图中的数据
//相当于req.setAttribute("name",name);
model.addAttribute("msg",name);
return "test";
}
*三者对比
Model:只有几个方法,只适用于储存数据,简化了对Model对象的操作与理解;
ModelMap:继承了LinkedMap,除了自身的一些方法,同样继承了LinkedMap的方法和特性;
ModelAndView:可以储存数据,可以设置返回的逻辑视图,进行控制展示层的跳转。

浙公网安备 33010602011771号