处理模型数据
一、ModelAndView处理模型数据
1、编写Controller
@Controller
@RequestMapping("springmvc2")
public class HelloWorldHandler2 {
/**ModelAndView
* 1、核心业务方法的返回值为ModelAndView:模型数据,视图
* 2、方法的内部,创建ModelAndView对象
* 设置视图:
* setView(View view)
* setViewName(String)
* 添加模型数据:
* addObject(String,Object)
* addObjects(Map map)
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
ModelAndView mv = new ModelAndView();
mv.setViewName("success");
//ModelAndView模型数据的值,放到Request范围
mv.addObject("name","TOM");
return mv;
}
}
2、编写Jsp文件
<body>
${ requestScope.name}
</body>
二、Map、Model、ModelMap处理模型数据
1、编写Controller
/**
* Map、Model、ModelMap处理模型数据 (Request范围)
* Map.put(String,Object) ----------使用居多
* Model.addAttribute(String,Object)----------了解
* ModelMap.addAttribute(String,Object)----------了解
*/
@RequestMapping("/testMap")
public String testMap(Map<String,Object> map) {
map.put("age", "12");
return "success";
}
@RequestMapping("/testModel")
public String testModel(Model model) {
model.addAttribute("email", "11@qq.com");
return "success";
}
@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap) {
modelMap.addAttribute("city", "Beijing");
return "success";
}
2、编写Jsp文件
<body>
${ requestScope.age}
<br/>
${ requestScope.email}
<br/>
${ requestScope.city}
</body>
三、SessionAttributes注解
1、编写Controller
@Controller
@RequestMapping("springmvc2")
/** @SessionAttributes(value={})
* 1、要求放置的值,必须在模型数据里面(request范围内有效)
* 2、标注属性:
* 1)通过属性的key值完成session的共享数据属性
* value={"a","b"}
* 2)可以通过模型数据当中的类型,共享数据的设置
* @SessionAttributes(types={String.class})
*/
@SessionAttributes(value= {"city"})
public class HelloWorldHandler2 {
@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap) {
modelMap.addAttribute("city", "Beijing");
return "success";
}
@RequestMapping("/result")
public String testResult() {
return "result";
}
}
2、编写success.jsp
<body>
requestScope.city:${ requestScope.city}
<br/>
sessionScope.city:${ sessionScope.city}
<br/>
<a href="result">result</a>
</body>
3、编写result.jsp
<body>
sessionScope.city:${sessionScope.city }
</body>
四、ModelAttribute
1、编写index.jsp
<form action="springmvc2/testModelAttribute">
id:<input type="text" name="id" value="101"/><br/>
name:<input type="text" name="name" value="TOM"/><br/>
<input type="submit" value="UPDATE">
</form>
2、编写Controller
/** ModelAttribute
* 方法:在当前控制器中所有的业务方法调用之前执行的方法
*/
//1)、修饰没有返回值的方法
@ModelAttribute
public void start(Map<String,Object> map) {
Account account = new Account(1,"tom","2018-8-29");
map.put("abc", account);
}
//2)、修饰有返回值的方法(若省略value,则key为account)
@ModelAttribute(value="abc")
public Account modelAttribute() {
Account account = new Account(1,"tom","2018-8-29");
return account;
}
//pojo入参从请求范围当中查找指定key对应的value对象(POJO类首字母小写对应的单词===>key(Account-->account))
//也可指定key值
@RequestMapping("/testModelAttribute")
public String update(@ModelAttribute("abc")Account account) {
System.out.println(account);
return "success";
}