一、处理提交数据
沿用上一篇博客项目!
1.1、提交的域名称和处理方法的参数名一致
提交数据:http://localhost:8080/hello?name=Massimo
处理方法:
@RequestMapping("hello")
public String hello(String name){
System.out.println(name);
return "hello";
}
后台输出:Massimo
1.2、提交的域名称和处理方法的参数名不一致
提交数据:http://localhost:8080/hello?username=Massimo
处理方法:
//@RequestParam("username") username提交的域的名称
@RequestMapping("hello")
public String hello(@RequestParam("username") String name){
System.out.println(name);
return "hello";
}
后台输出:Massimo
1.3、提交的是一个对象
实体类:
package com.massimo.pojo;
public class User {
private int id;
private String name;
private int age;
public User() {
}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
提交的数据:
http://localhost:8080/mvc04/user?name=Massimo&id=1&age=20
处理方法:
@RequestMapping("/user")
public String user(User user){
System.out.println(user);
return "hello";
}
后台输出:
User{id=1,name=“Massimo”,age=20}
说明:如果使用对象的话,前端传递的参数名和对象名必须一致,否则就是null。
二、数据显示到前端
2.1、第一种:通过ModelAndView
此处省略
2.2、第二种:通过Model
此处省略
2.3、第三种:通过ModelMap
@GetMapping("/hello")
public String hello(@RequestParam("username") String name , ModelMap model){
//封装要显示到视图中的数据
//相当于request.setAttribute("name",name);
model.addAttribute("msg",name);
System.out.println(name);
return "hello";
}
效果:
三、对比
对于新手而言简单来说使用区别就是:
- Model只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
- ModelMap继承了LinkedMap ,除了实现了自身的一些方法,同样的继承LinkedMap 的方法和特性;
- ModelAndView可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。
更多的以后开发考虑的更多的是性能和优化,就不能单单仅限于此的了解。