博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.SpringMVC注解式开发-处理器方法的返回值
阅读量:7101 次
发布时间:2019-06-28

本文共 3858 字,大约阅读时间需要 12 分钟。

处理器方法的返回值

  使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型

  1.ModelAndView

  2.String

  3.void

  4.自定义类型对象

 

1.返回ModelAndView

  若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法

  返回ModelAndView比较好。当然,若要返回ModelAndView,则处理器方法中需要定义ModelAndView对象

  在使用时,若该处理器方法只是进行跳转而不传递数据或只是传递数据而不向任何资源跳转(如对页面的Ajax异步响应)

  此时若返回ModelAndView,则将总是有一部分多余:要么Model多余,要么View多余。即此时返回ModelAndView 不合适

 

2.返回String

  1.返回内部资源逻辑视图名

  2.返回View对象名

1 // 返回 内部资源逻辑视图名 (若只跳转不返回数据,则可以直接使用 String 作为返回值) 2     @RequestMapping(value = "/returnString1.do") 3     public String method() { 4         return "/WEB-INF/jsp/hello.jsp"; // 注册了 视图解析器 之后,好像就只能去 return 视图对象的 5                                             // id名,才能找到对应的视图 6     } 7  8     // 返回 外部资源逻辑视图名 (需 注册一个 视图解析器 。并定义id 为 taobao 的视图对象) 9     @RequestMapping(value = "/returnString2.do")10     public String method2() {11         return "taobao";12     }

 

3.返回void:

  对于处理器方法返回void的应用场景,主要有两种:

  1.通过ServletAPI 传递数据并完成跳转

  2.AJAX 响应

1 // 返回 void ,通过 servlet里面的 API 完成数据的处理和跳转 2     @RequestMapping(value = "/returnVoid.do") 3     public void method3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { 4         request.setAttribute("name", "xzk"); 5         request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(request, response); 6     } 7  8     //返回 void ,通过AJAX 进行异步请求相应,不需要指定返回的视图,会自动返回到请求的页面 9     @RequestMapping(value = "/ajax.do")10     public void method4(String name,int age,HttpServletResponse response) throws IOException {11         //处理器对于 AJAX 请求中所提交的参数,可以使用逐个接受的方式,也可以以对象的方式整体接收。只要保证AJAX请求参数与接收对象的属性名称一致12         Map
map = new HashMap
();13 //数据存储到 Map 中14 map.put("name", name);15 map.put("age", age);16 17 //将 map 转为 JSON18 JSONObject jsonObject = JSONObject.fromObject(map);19 //得到JSON字符串20 String jsonStr = jsonObject.toString();21 //将数据发回客户端(json字符串)22 23 PrintWriter out = response.getWriter();24 out.print(jsonStr);25 out.close();26 }

 

 

4.返回Object

  处理器方法也可以放回Object 对象。但返回的这个Object对象不是作为逻辑视图出现的,

  而是作为直接在页面显示的数据出现的

  返回Object对象,需要使用 @ResponseBody 注解,将转换后的JSON数据放入到响应体中

  环境搭建:1.导入Jar包    2.注册注解驱动

1 @Controller 2 @RequestMapping("/test") 3 public class MyController { 4  5     // 返回 Obejct ,但返回的这个Object对象 6     // 不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的(需要将Object转成JSON给浏览器页面,所以需要 jackson 7     // jar包)(为什么JSONObject 不可以呢,因为SpringMVC会自动去调jackson,是配套的,而不会自己去调用JSONObject吧,) 8     // 返回 Object 对象 ,需要使用 @ResponseBody 注解 ,将转换后的JSON数据 放入到响应体 中 9     @RequestMapping(value = "/ajax.do")10     @ResponseBody11     public Object method() {12         return 99.99;13     }14 15     //返回字符串对象 (如果里面包含中文,需要使用  produces 来 限制输出结果的类型 )16     @RequestMapping(value = "/ajaxString.do",produces="text/html;charset=utf-8")17     @ResponseBody18     public String method2() {19         return "99.99 字符";20     }21     22     //返回自定义类型对象23     @RequestMapping(value = "/ajaxPerson.do")24     @ResponseBody25     public Person method3() {26         27         return new Person("徐泽昆",20);28     }29     30     //返回Map集合31     @RequestMapping(value = "/ajaxMap.do")32     @ResponseBody33     public Map
method4() {34 Map
map = new HashMap
();35 map.put("person1", new Person("徐泽昆1",21));36 map.put("person2", new Person("徐泽昆2",22));37 38 return map;39 }40 41 //返回List 集合42 @RequestMapping(value = "/ajaxList.do")43 @ResponseBody44 public List
method5() {45 List
list = new ArrayList
();46 list.add(new Person("徐泽昆1",21));47 list.add(new Person("徐泽昆2",22));48 list.add(new Person("徐泽昆3",23));49 return list;50 }51 }
1 

 

转载于:https://www.cnblogs.com/xuzekun/p/7410702.html

你可能感兴趣的文章
【原】NSMutableDictionary与NSMutableArray
查看>>
【转载】如何发送和接收 Windows Phone 的磁贴通知
查看>>
Inside OTA Packages
查看>>
使用QEMU调试Linux内核代码
查看>>
WebRTC之带宽控制部分学习(1) ------基本demo的介绍
查看>>
java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener
查看>>
如何一秒钟从头构建一个 ASP.NET Core 中间件
查看>>
Maven修改默认本地资源库文件夹
查看>>
IntelliJ IDEA 使用心得与常用快捷键
查看>>
vivado设计四:自定义IP核测试
查看>>
C#设计模式之十八状态模式(State Pattern)【行为型】
查看>>
SpringCloud(一)浅谈SpringCloud
查看>>
spring getbean 方法分析(很实用!)
查看>>
你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
查看>>
Asp.net 动态为TreeView创建结点
查看>>
dedecms 系统的 data/rssmap.html不存在!更新了也没有。。。
查看>>
博文共赏:Node.js静态文件服务器实战
查看>>
CS安装卸载测试总结(转)
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)
查看>>
iphone开发之轻松搞定原生socket 编程,阻塞与非阻塞,收发自如
查看>>