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的方法和特性

 

 

posted @ 2022-01-23 10:58  从0开始丿  阅读(36)  评论(0编辑  收藏  举报