第一种处理数据模型——ModelAndView
通过ModelAndView,放入一些对象,返回它,即可传递参数给前端,示例代码如下:
/**
* 目标方法的返回值可以是ModelAndView类型.
* 其中可以包含视图和模型信息.
* SpringMVC会把ModelAndView的model中的数据放入到request域对象中.
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
String viewName = SUCCESS;
ModelAndView modelAndView = new ModelAndView(viewName);
// 添加模型数据到ModelAndView中
modelAndView.addObject("time", new Date());
return modelAndView;
}
第二种处理数据模型——Map/Model/ModelMap
目标方法的入参使用Map/Model/ModelMap,也可以进行数据的传递,代码如下:
/**
* 比较常用:
* 目标方法可以添加Map类型(实际上也可以是Model类型或ModelMap类型)的参数
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map) {
System.out.println(map.getClass().getName());
map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));
return SUCCESS;
}
<body>
names:${requestScope.names }
</body>
@SessionAttribute
前面都是放在请求域里面,当然也可以放在Session中。
注解位置:类定义处
示例代码如下:
@SessionAttributes(value = { "user" }, types = { String.class })
@RequestMapping("/springmvc")
@Controller
public class SrpingMVCTest {
private static final String SUCCESS = "success";
/**
* @SessionAttributes 除了可以通过属性名(values)指定需要放到会话中的属性外,
* 还可以通过模型属性的对象类型(types)指定哪些型属性需要放到会话中
*
* 注意 : 该注解只能放在类的上面,而不能修饰方法
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(ModelMap modelMap) {
User user = new User("Tom", "123456", "[email protected]", 15, null);
modelMap.addAttribute("user", user);
modelMap.addAttribute("schoole", "schoole");
return SUCCESS;
}
}
<body>
request user:${requestScope.user }
<br></br>
session user:${sessionScope.user }
<br></br>
request schoole:${requestScope.schoole }
<br></br>
session schoole:${sessionScope.schoole }
<br></br>
</body>
其中,可以指定values,来指定数据的Key。也可以指定types,来指定数据的类型,满足类型的都可以放入。