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的方法和特性
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术