SpringMVC提供了四种途径输出模型数据
1.ModelAndView
处理方法返回值类型是ModelAndView时,方法体即可通过该对象添加模型数据
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName=INDEX;
ModelAndView modelAndView = new ModelAndView(viewName);
modelAndView.addObject("time", new Date());
return modelAndView;
}
time:${requestScope.time}
requestScope:
是EL表达式中的一个隐含对象,类似request,如:${requestScope.time} 表示在request域中取得time属性所对应的值,相当于request.getAttribute(“time”)
<%= request.getAttribute("time") %>
2.Map及Model
SpringMVC在内部使用了org.springframework.ui.Model接口存储模型数据
在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器,如果方法的入参为Map或Model类型,SpringMVC会将隐含模型的引用传递给这些入参,方法体内,可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据
图片.png@RequestMapping("/testMap")
public String testMap(Map<String,Object> map){
map.put("names", Arrays.asList("jack","david","sufei"));
return INDEX;
}
names:${requestScope.names}
3.SessionAttributes
在多个请求之间公共某个模型属性数据,可以在控制器类上标注一个@SessionAttributes ,springMVC将在模型中对应的属性暂存到HttpSession中
除了可以通过属性名指定需要放到会话中的属性 外,还可以通过模型属性的对象类型指定哪些属性需要放到会话中
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String,Object> map){
User user=new User("tom","123456",new Address("guiping","guangxi"));
map.put("user", user);
map.put("school", "beida");
return INDEX;
}
user:${sessionScope.user}
school:${sessionScope.school}
@SessionAttributes(value = {"user"},types = {String.class})
@SessionAttributes该注解只能放在类上不能修饰方法!!!
@SessionAttributes(type=User.class)
@SessionAttributes(value={"user1","user2"})
@SessionAttributes(type={User.class,String.class})
@SessionAttributes(value={"user1","user2"},type={User.class,String.class})
网友评论