前面几篇文章重点说明了一下怎么从前台传递参数到目标方法,还没有说怎么把结果返回给前台。本篇来讲述一下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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。