1.提交数据的处理
a)提交的域名名称和处理方法参数一致即可。
提交的数据:
处理方法:
@RequestMapping("/hello") public String hello(String name){ System.out.println(name); return "index.jsp"; }
b)如果域名名称和处理方法参数不一致。
提交的数据:
处理方法:
@RequestMapping("/hello")public String hello(@RequestParam("uname")String name){ // @RequestParam("uname") uname是提交的域的名称 System.out.println(name); return "index.jsp";}
c)如果提交的是一个对象
要求提交的表单域名和对象的属性名一致,参数使用对象即可。
提交的数据:
处理方法:
@RequestMapping("/user") public String user(User user){ System.out.println(user); return "index.jsp"; }
实体类
public class User { private int id; private String name; private String pwd; //省略了get/set方法 }
2.将数据显示到UI层
a)通过ModelAndView----需要视图解析器
@Overridepublic ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { ModelAndView mv = new ModelAndView(); //封装要显示到视图中的数据 //相当于req.setAttribute("msg","hello springmvc"); mv.addObject("msg","hello springmvc"); //视图名 mv.setViewName("index"); //WEB-INF/jsp/hello.jsp return mv; }
b)通过ModelMap----不需要视图解析器
ModelMap需要作为处理方法的参数
public String hello(@RequestParam("uname")String name,ModelMap model){ //相当于request.setAttribute("NAME",name); model.addAttribute("NAME",name); System.out.println(name); return "index.jsp"; }
ModelAndView和ModelMap
相同点:
都可以将数据封装显示表示层页面中。
不同点:
ModelAndView可以指定跳转的视图,而ModelMap不能;
ModelAndView需要视图解析器,而ModelMap不需要。