处理提交数据
提交的域名称和处理方法的参数名一致
//http://localhost:8080/user/t3?name=小明
@GetMapping("/t3")
public String test3(String name, Model model){
//接收了前端的参数
System.out.println("接收到前端的参数为:" + name);
//将返回的结果传递给前端
model.addAttribute("msg",name);
return "test";
}
提交的域名称和处理方法的参数名不一致
//http://localhost:8080/user/t1?username=%E5%B0%8F%E6%98%8E
@GetMapping("/t1")
public String test1(@RequestParam("username") String name, Model model){
//接收了前端的参数
System.out.println("接收到前端的参数为:" + name);
//将返回的结果传递给前端
model.addAttribute("msg",name);
return "test";
}
提交的是一个对象
编写实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
private int age;
}
提交数据代码
//http://localhost:8080/user/t2?id=1&name=小明&age=18
//前端接受的是一个对象 : id , name , age
@GetMapping("t2")
public String test2(User user){
System.out.println(user);
return "test";
}
数据显示到前端
通过ModelAndView
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中。Model
mv.addObject("msg", "HelloSpringMVC!");
//封装要跳转的视图,放在ModelAndView中
// /WEB-INF/jsp/hello.jsp
mv.setViewName("test");
return mv;
}
}
<bean class="com.yuan.controller.HelloController" id="/h1"/>
通过Model和ModelMap
@Controller
@RequestMapping("/c3")
public class ControllerTest3 {
//映射访问路径
@RequestMapping("/t1")
public String test(Model model) {
//Spring MVC会自动实例化一个Model对象用于向视图中传值
model.addAttribute("msg", "ControllerTest3...test");
//返回视图名
return "test";
}
@RequestMapping("/t2")
public String test2(ModelMap modelMap) {
//Spring MVC会自动实例化一个Model对象用于向视图中传值
modelMap.addAttribute("msg", "ControllerTest3...test2");
//返回视图名
return "test";
}
}
对比
- Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
- ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;
- ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。