spring mvc返回json字符串的方式

方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json

           优点:不需要自己再处理

步骤一:在spring-servlet.xml文件中配置如下代码

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans.xsd
  10. http://www.springframework.org/schema/context
  11. http://www.springframework.org/schema/context/spring-context.xsd
  12. http://www.springframework.org/schema/mvc
  13. http://www.springframework.org/schema/mvc/spring-mvc.xsd ">
  14.  
  15. <!--使用Annotation方式 完成映射 -->
  16. <!--让spring扫描包下所有的类,让标注spring注解的类生效 -->
  17. <context:component-scan base-package="cn.yxj.controller"/>
  18. <mvc:annotation-driven/>
  19. <!--视图解析器 -->
  20. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  21. <property name="prefix" value="/WEB-INF/jsp/"></property>
  22. <property name="suffix" value=".jsp"></property>
  23. </bean>
  24. </beans>

步骤二:在处理器方法中打上@ResponseBody  标签

  1. @RequestMapping(value="/hello5.do")
  2. @ResponseBody
  3. public String hello(HttpServletResponse response) throws IOException{
  4. UserInfo u1=new UserInfo();
  5. u1.setAge(15);
  6. u1.setUname("你好");
  7.  
  8. UserInfo u2=new UserInfo();
  9. u2.setAge(152);
  10. u2.setUname("你好2");
  11. Map<String,UserInfo> map=new HashMap<String, UserInfo>();
  12. map.put("001", u1);
  13. map.put("002", u2);
  14. String jsonString = JSON.toJSONString(map);
  15. return jsonString;
  16. }

步骤三:使用ajax进行获取数据

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13.  
  14. <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
  15. <script type="text/javascript">
  16. $(function(){
  17. $("#btn").click(function(){
  18. $.ajax({
  19. url:"<%=path%>/Five.do",
  20. success:function(data){
  21. //解析对象
  22. //alert(data.uname+"\n"+data.age);
  23. //解析map
  24. //alert(data.info.age+"\n"+data.info.uname);
  25. //解析list
  26. $.each(data,function(i,dom){
  27. alert(dom.uname+"\n"+dom.age);
  28. });
  29. }
  30. });
  31. });
  32. });
  33. </script>
  34. </head>
  35.  
  36. <body>
  37. <input type="button" value="ajax" id="btn"/>
  38.  
  39. </body>
  40. </html>

方案二:处理器方法的返回值---Object

  由于返回Object数据,一般都是将数据转化为JSON对象后传递给浏览器页面的,而这个由Object转换为Json,是由Jackson工具完成的,所以要导入jar包,将Object数据转化为json数据,需要Http消息

  转换器 HttpMessageConverter完成。而转换器的开启,需要由<mvc:annotation-driven/> 来完成,当spring容器进行初始化过程中,在<mvc:annotation-driven/> 处创建注解驱动时,默认创

  建了七个HttpMessageConverter对象,也就是说,我们注册<mvc:annotation-driven/>,就是为了让容器帮我们创建HttpMessageConverter对象

详细代码看

方案二、使用返回字符串的处理器方法,去掉@ResponseBody注解

步骤一、同上

步骤二

  1. @RequestMapping(value="/hello5.do")
  2. public String hello(HttpServletResponse response) throws IOException{
  3. UserInfo u1=new UserInfo();
  4. u1.setAge(15);
  5. u1.setUname("你好");
  6.  
  7. UserInfo u2=new UserInfo();
  8. u2.setAge(152);
  9. u2.setUname("你好2");
  10. Map<String,UserInfo> map=new HashMap<String, UserInfo>();
  11. map.put("001", u1);
  12. map.put("002", u2);
  13. String jsonString = JSON.toJSONString(map);
  14. return jsonString;
  15. }

步骤三、在前台取值的时候需要我么做一遍处理

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13.  
  14. <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
  15. <script type="text/javascript">
  16. $(function(){
  17. $("#btn").click(function(){
  18. $.ajax({
  19. url:"<%=path%>/hello5.do",
  20. success:function(data){ //data指的是从server打印到浏览器的数据
  21. //jsonString jsonObject
  22. //{"001":{"age":122,"name":"顺利就业"}}
  23. var result= eval("("+data+")");
  24. $.each(result,function(i,dom){
  25. alert(dom.age+"\n"+dom.uname);
  26.  
  27. });
  28. // alert(result["001"]["age"]);
  29. }
  30. });
  31. });
  32. });
  33. </script>
  34. </head>
  35.  
  36. <body>
  37. <input type="button" value="ajax" id="btn"/>
  38.  
  39. </body>
  40. </html>

方案三:使用无返回值的处理器方法

步骤一:同上

步骤二:使用响应流回送数据

  1. @RequestMapping(value="/hello5.do")
  2. public void hello(HttpServletResponse response) throws IOException{
  3. UserInfo u1=new UserInfo();
  4. u1.setAge(15);
  5. u1.setUname("你好");
  6.  
  7. UserInfo u2=new UserInfo();
  8. u2.setAge(152);
  9. u2.setUname("你好2");
  10. Map<String,UserInfo> map=new HashMap<String, UserInfo>();
  11. map.put("001", u1);
  12. map.put("002", u2);
  13. String jsonString = JSON.toJSONString(map);
  14. response.setCharacterEncoding("utf-8");
  15. response.getWriter().write(jsonString);
  16. response.getWriter().close();
  17.  
  18. }

步骤三:在前台取值也需要做处理

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13.  
  14. <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
  15. <script type="text/javascript">
  16. $(function(){
  17. $("#btn").click(function(){
  18. $.ajax({
  19. url:"<%=path%>/hello5.do",
  20. success:function(data){ //data指的是从server打印到浏览器的数据
  21. //jsonString jsonObject
  22. //{"001":{"age":122,"name":"顺利就业"}}
  23. var result= eval("("+data+")");
  24. $.each(result,function(i,dom){
  25. alert(dom.age+"\n"+dom.uname);
  26.  
  27. });
  28. // alert(result["001"]["age"]);
  29. }
  30. });
  31. });
  32. });
  33. </script>
  34. </head>
  35.  
  36. <body>
  37. <input type="button" value="ajax" id="btn"/>
  38.  
  39. </body>
  40. </html>

spring mvc返回json字符串的方式的更多相关文章

  1. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  2. spring mvc返回json格式和json字符串

    首先有必要说一下,json和json字符串是不一样的,后者是一个字符串.而json是一个对象 当然如果调用位置是后台程序这几乎没有区别,因为在后台,无论什么格式数据,都是从响应流中读取字符串. 但是在 ...

  3. spring mvc 返回json数据的四种方式

    一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式 ...

  4. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  5. 使用spring mvc返回JSON,chrome可以,firefox不行的问题定位

    转载http://ks.netease.com/blog?id=4024 作者:李景     场景:          前端Post请求同一个url地址,在chrome浏览器上有正常返回json,而在 ...

  6. spring入门(四) spring mvc返回json结果

    前提:已搭建好环境 1.建立Controller package com.ice.controller; import com.ice.model.Person; import org.springf ...

  7. 转:spring mvc返回json数据格式

    转:http://www.cnblogs.com/ssslinppp/p/4675495.html <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: ...

  8. Spring mvc 返回json格式 - 龙企阁 - 博客频道 - CSDN.NET

    第一次使用spring mvc ,在此也算是记录一下以防忘记,希望有经验的朋友指出不足的地方 一.使用maven管理jar. <dependency> <groupId>org ...

  9. spring mvc 返回json的配置

    转载自:http://my.oschina.net/haopeng/blog/324934 springMVC-servlet.xml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

随机推荐

  1. 微软收购Xamarin,你怎么看?

    今天的最大新闻就是微软收购热门初创企业Xamarin,从网上的反馈大部分都是积极的,也有担心微软在把Xamarin移动开发技术整合进VS的同时,还很有可能废掉MONO的GUI客户端能力只保留.net ...

  2. Apache2.4卡住无法访问的解决……

    早两个星期,搭建了一个项目管理平台--<如何安装一个优秀的BUG管理平台--真的是手把手教学!>.以前都是用apache2.2的,这次换了apache2.4.安装起来是没有问题的,结果运行 ...

  3. 在开发中到底要不要用var?

    var是.net的一个语法糖,在Resharper中推荐都使用这个关键字,平常我也是经常用:但是在跟其他程序员推广使用时,他的一些考虑引发了我的深思,到底该不该使用这个关键字呢? 我使用的理由 我使用 ...

  4. (实例篇)php 使用redis锁限制并发访问类示例

    1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功. 例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制 ...

  5. 使用python实现短信PDU编码

    前几天入手一个3G模块,便倒腾了一下.需要发送中英文混合短信,所以采用PDU模式(不了解google ^_^). 最大问题当然就是拼接PDU编码(python这么强大,说不定有模块),果不其然找到一个 ...

  6. Windows下PowerShell监控Keepalived

    一.背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警. 二 ...

  7. 【完全开源】微信客户端.NET版

    目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了 ...

  8. MVC5 网站开发之八 栏目功能 添加、修改和删除

    本次实现栏目的浏览.添加.修改和删除. 栏目一共有三种类型. 常规栏目-可以添加子栏目,也可以添加内容模型.当不选择内容模型时,不能添加内容. 单页栏目-栏目只有一个页面,可以设置视图. 链接栏目-栏 ...

  9. React.render和reactDom.render的区别

    刚开始学习react.js.发现网上的资料,有些是写着react.render,有些写着reactDom.render.觉得很奇怪就查阅了一下资料.解释如下: 这个是react最新版api,也就是0. ...

  10. 【NLP】基于自然语言处理角度谈谈CRF(二)

    基于自然语言处理角度谈谈CRF 作者:白宁超 2016年8月2日21:25:35 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...