八、数据处理
1. 处理提交数据
- 提交的名称和方法的参数名一致
//localhost:8080/user/t1?name=xxx; @GetMapping("/t1") public String test1(String name, Model model){ //1.接收前端参数 System.out.println("接收到前端的参数为:" + name); //2.将返回的结果传递给前端 model.addAttribute("msg", name); //3.跳转视图 return "test"; }
2.提交的名称和方法的参数名不一致
//加上@RequestParam("username")就知道是从前端接收过来localhost:8080/user/t1?username=xxx;。此时必须要通过username识别 @GetMapping("/t1") public String test1(@RequestParam("username") String name, Model model){ //1.接收前端参数 System.out.println("接收到前端的参数为:" + name); //2.将返回的结果传递给前端 model.addAttribute("msg", name); //3.跳转视图 return "test"; }
3.提交一个对象
//前端接收的是一个对象:id, name, age //localhost:8080/user/t1?id=1&name=xxx&age=2; /* * 1.接收前端用户传递的参数,判断参数的名字,假设名字直接在方法上可以直接使用 * 2.假设传递的是一个对象User,匹配User对象中的字段名:如果名字一致则ok。否则匹配不到 * * */ @GetMapping("/t2") public String test2(User user){ System.out.println(user); //3.跳转视图 return "test"; }
使用对象,前端传递的参数名和对象名必须一致,否则为空。
2. 数据显示到前端
2.1 ModelAndView
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("msg","ControllerTest1"); modelAndView.setViewName("test"); return modelAndView; }
2.2 Model
@RequestMapping("/t2") public String test(Model model){ model.addAttribute("msg", "ControllerTest2"); return "test"; }
2.3 ModelMap
@GetMapping("/t3") public String test3(@RequestParam("username") String name,Model map){ map.addAttribute("name",name); return "test"; }
对比:
ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。 ModelMap 继承了 LinkedHashMap ,除了实现了自身的一些方法,同样的继承 LinkedHashMap 的方法和特性; Model 少数方法适合用于储存数据,简化了新手对于Model对象的操作和理解;大部分情况下直接使用Model