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应用必不可少的技术
点击右上角即可分享
微信分享提示