springMVC-数据处理
1 处理提交数据
1.1 提交的域名称和处理方法的参数名一致
1.1.1 代码
@Controller
@RequestMapping("/user")
public class UserController {
//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";
}
}
1.1.2 地址栏输入
http://localhost:8080/user/t1?name=哈哈
1.1.3 后端控制台输出
接收到前端的参数为:哈哈
1.2 提交的域名城和处理方法的参数名不一致
1.2.1 代码
在参数前面增加一个@RequestParam("别名") 起一个别名
@Controller
@RequestMapping("/user")
public class UserController {
//Localhost:8080/user/t1 ? name=xxx
@GetMapping("/t1")
public String test1(@RequestParam("username") String name, Model model){
//1.接收前端数据
System.out.println("接收到前端的参数为:"+name);
//2.将返回的结果传递给前端
model.addAttribute("msg",name);
//3.视图跳转
return "test";
}
}
建议使用这种方式,可以更清楚看出那些参数时前端传递的
1.2.2 地址栏输入
http://localhost:8080/user/t1?username=哈哈
2.1.3 后端控制台输出
接收到前端的参数为:哈哈
1.3 提交的是一个对象
1.3.1 新建实体类
引入了lombok依赖
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private int age;
}
1.3.2 代码
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/t1")
public String test1(User user){
//1.接收前端数据
System.out.println(user);
//2.视图跳转
return "test";
}
}
1.3.3 地址栏输入
http://localhost:8080/user/t1?id=5&name=哈哈&age=15
1.3.4 后端控制台输出
User(id=5, name=哈哈, age=15)
如果使用对象,前端传递的参数名和对象的属性名必须一致,否则就为null
2 数据显示到前端
2.1 通过ModelAndView
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg","Controller接口");
modelAndView.setViewName("test");
return modelAndView;
}
2.2 通过ModelMap
@GetMapping("/t1")
public String test1(ModelMap modelMap){
modelMap.addAttribute("msg","modelMap");
return "test";
}
运行Tomcat测试
2.3 通过Model
@GetMapping("/t1")
public String test1(Model model){
model.addAttribute("msg","model");
return "test";
}
运行Tomcat测试
2.4 三种方式的对比
- ModelAndView 可以在储存数据的同时,设置返回的逻辑视图,进行控制展示层的跳转
- Model只有少量几个方法适合用于储存数据,简化了Model对象的理解和操作
- ModelMap继承了LinkedMap,除了实现了自身的一些方法,还继承了LinkedMap的方法和特性