SpringMVC-数据处理
六、数据处理
1、提交处理一个参数
@Controller
@RequestMapping("/user")
public class UserController {
//提交处理一个参数
@GetMapping("/t1")
public String test1(@RequestParam("username") String name, Model model){
//拿到参数
System.out.println("从前端拿到名字:"+name);
//前端接收值
model.addAttribute("msg",name);
//跳转页面
return "test";
}
页面访问:http://localhost:8080/user/t1?username=秦始皇;
前端页面输出“msg”:秦始皇;
控制台打印:从前端拿到名字:秦始皇
tips:
- 前端传入的参数名跟方法中传入的参数名不一致,会得到nul,因此使用@RequestParam约束
2、提交处理一个对象
- 创建一个实体类
public class User {
private int id;
private String name;
private String age;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
- 控制层
//提交处理一个对象
@GetMapping("/t2")
public String test2(User user){
System.out.println(user);
return "test";
}
页面访问:http://localhost:8080/user/t2?id=3&name=1&age=2;
控制台打印user对象:User{id=3, name=‘1’, age=‘2’}
3、数据显示到前端
- ModelAndView
public class ControllerTest1 implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//返回一个模型视图对象
ModelAndView mv = new ModelAndView();
mv.addObject("msg","ControllerTest1");
mv.setViewName("test");
return mv;
}
}
- ModelMap
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name, ModelMap modelMap){
//封装要显示到视图中的数据
//相当于req.setAttribute("name",name);
modelMap.addAttribute("name",name);
System.out.println(name);
return "hello";
}
- Model
@RequestMapping("/ct2/hello")
public String hello(@RequestParam("username") String name, Model model){
//封装要显示到视图中的数据
//相当于req.setAttribute("name",name);
model.addAttribute("msg",name);
System.out.println(name);
return "test";
}
- 对比
- model只是寥寥几个方法,只适合用来存储数据,简化了新手对于model对象的操作和理解;
- modelMap继承了LinkedMap,除了实现自身的一些方法,同样继承LinkedMap的方法和特点;
- ModelAndView 可以在存储数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转;