前面几篇文章重点说明了一下怎么从前台传递参数到目标方法,还没有说怎么把结果返回给前台。本篇来讲述一下spring mvc怎么返回结果数据。
从使用形式上看,有以下几种方式:ModelAndView、Map、Model,这几种方式都可以返回数据到前台,本质上来看都是通过map的形式返回数据的。本系列文章着重于使用,深层次的原因,感兴趣的同志可以去调适源代码,这里只是结合使用方式,做简单的样例和分析。
1、ModelAndView的使用
/**
* 方法的返回值可以是ModelAndView类型,它可以包含视图和模型信息
* spring mvc会把模型信息放入到request域对象中,可以跟踪源码调试
* 这个类org.springframework.web.servlet.view.AbstractView
* 这个方法exposeModelAsRequestAttributes
* @return
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
ModelAndView modelAndView = new ModelAndView("success");
modelAndView.addObject("name", "Jack use ModelAndView");
return modelAndView;
}
2、Map的使用
/**
* 使用map返回数据,实际上是实例化了一个
* org.springframework.validation.support.BindingAwareModelMap
* @param map
* @return
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map) {
System.out.println(map.getClass().getName());
map.put("name", "Jack use Map");
return "success";
}
3、Model的使用,本质上与map一样
/**
* 使用model和使用map一样,都是实例化了一个
* org.springframework.validation.support.BindingAwareModelMap
* @param model
* @return
*/
@RequestMapping("/testModel")
public String testModel(Model model) {
System.out.println(model.getClass().getName());
model.addAttribute("name", "Jack use Model");
return "success";
}
4、SessionAttributes的使用,可以把数据存放到session域中去,有两个属性,value和types,value执行需要放到会话中的属性的属性名,types指定需要放到会话中的属性的类型。
在类上添加注解:
@SessionAttributes(value = {"user"}, types = {String.class})
目标方法的定义
/**
* 注解SessionAttribute可以通过属性名指定需要放到会话中的属性,实际上通过value属性
* 还可以通过types指定哪些类型的属性需要放到会话中去
* 但是该注解只能用于类上
* @param map
* @return
*/
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map) {
User user = new User();
user.setAge(15);
user.setUserName("lxy");
map.put("user", user);
map.put("name", "jack in sessionAttribute");
return "success";
}
项目源代码:
https://git.oschina.net/acesdream/spring-mvc
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。