上两篇我们对处理器方法的参数进行了分别讲解, 今天来学习处理器方法的返回值.
一, 返回 ModelAndView
若处理器方法处理完后, 需要跳转到其它资源, 且又要在跳转资源之间传递数据, 此时处理器方法返回 ModelAndView 较好. 在使用时, 若该处理器方法只是进行跳转而不传递数据, 或只是传递数据而不跳转资源 (比如对页面的 Ajax 异步响应), 此时若返回 ModelAndView, 总有一部分多余, 要么 Model 多余, 要么 View 多余, 此时返回 ModelAndView 不合适.
二, 返回 String
1: 内部资源视图名
在 Controller 方法中直接返回内部资源视图的名称字符串, 如下
- @RequestMapping("/toUserList.do")
- public String toUserList() throws Exception {
- return "/web-INF/jsp/success.jsp";
- }
注意返回 String 时可以配合内部资源视图解析器配置的前缀和后缀一起使用. 也可以返回视图对象名, 配合 XmlViewResolver 视图解析器来使用.
三, 返回 void
1: 通过 ServletAPI 来传递数据并完成跳转.
2: 使用 Ajax 的时候, 不需要有返回值.
四, 返回 Object
处理器方法也可以返回 Object 对象. 但返回的 Obejct 对象不是作为视图来出现的, 而是作为数据在页面直接显示的. 返回 Object 对象, 需要配合 @ResponseBody 注解来使用. 如下:
- @RequestMapping("/toUserList.do")
- @ResponseBody
- public String toUserList() throws Exception {
- return new Student();
- }
返回 Object 的时候, 还有可能返回 List 和 Map 以及自定义类型. 这些在处理起来需要前后台配合来开发. 下面给出一个例子来说明一下, 我们由后台返回一个 List<Student > 来说明问题.
1: 一般返回 Object 都是将对象转换成了 JSON 后传递给前台浏览器的, 由对象转换成 JSON 是由 jackson 包来完成的. 所以我们导入 jackson 包如下:
- jackson-annotations-2.2.3.jar
- jackson-core-2.2.3.jar
- jackson-databind-2.2.3.jar
2: 注册注解驱动
<mvc:annotation-driven />
在 springmvc.xml 中注册注解驱动后, 我们将 Controller 类的方法稍作修改, 如下:
- @RequestMapping("/list")
- @ResponseBody
- public List<Student> list(){
- List<Student> list = new ArrayList<Student>();
- for(int i = 0;i < 5;i++){
- list.add(new Student());
- }
- return list;
- }
到此我们就了解了 SpringMVC 注解式开发处理器方法的各种返回值.
来源: https://www.cnblogs.com/xinhudong/p/10556899.html