spring mvc返回json字符串的方式

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

           优点:不需要自己再处理

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!--使用Annotation方式 完成映射 -->
<!--让spring扫描包下所有的类,让标注spring注解的类生效 -->
<context:component-scan base-package="cn.yxj.controller"/>
<mvc:annotation-driven/>
<!--视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

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

@RequestMapping(value="/hello5.do")
@ResponseBody
public String hello(HttpServletResponse response) throws IOException{
UserInfo u1=new UserInfo();
u1.setAge(15);
u1.setUname("你好"); UserInfo u2=new UserInfo();
u2.setAge(152);
u2.setUname("你好2");
Map<String,UserInfo> map=new HashMap<String, UserInfo>();
map.put("001", u1);
map.put("002", u2);
String jsonString = JSON.toJSONString(map);
return jsonString;
}

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

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
$.ajax({
url:"<%=path%>/Five.do",
success:function(data){
//解析对象
//alert(data.uname+"\n"+data.age);
//解析map
//alert(data.info.age+"\n"+data.info.uname);
//解析list
$.each(data,function(i,dom){
alert(dom.uname+"\n"+dom.age);
});
}
});
});
});
</script>
</head> <body>
<input type="button" value="ajax" id="btn"/> </body>
</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注解

步骤一、同上

步骤二

@RequestMapping(value="/hello5.do")
public String hello(HttpServletResponse response) throws IOException{
UserInfo u1=new UserInfo();
u1.setAge(15);
u1.setUname("你好"); UserInfo u2=new UserInfo();
u2.setAge(152);
u2.setUname("你好2");
Map<String,UserInfo> map=new HashMap<String, UserInfo>();
map.put("001", u1);
map.put("002", u2);
String jsonString = JSON.toJSONString(map);
return jsonString;
}

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

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
$.ajax({
url:"<%=path%>/hello5.do",
success:function(data){ //data指的是从server打印到浏览器的数据
//jsonString jsonObject
//{"001":{"age":122,"name":"顺利就业"}}
var result= eval("("+data+")");
$.each(result,function(i,dom){
alert(dom.age+"\n"+dom.uname); });
// alert(result["001"]["age"]);
}
});
});
});
</script>
</head> <body>
<input type="button" value="ajax" id="btn"/> </body>
</html>

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

步骤一:同上

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

@RequestMapping(value="/hello5.do")
public void hello(HttpServletResponse response) throws IOException{
UserInfo u1=new UserInfo();
u1.setAge(15);
u1.setUname("你好"); UserInfo u2=new UserInfo();
u2.setAge(152);
u2.setUname("你好2");
Map<String,UserInfo> map=new HashMap<String, UserInfo>();
map.put("001", u1);
map.put("002", u2);
String jsonString = JSON.toJSONString(map);
response.setCharacterEncoding("utf-8");
response.getWriter().write(jsonString);
response.getWriter().close(); }

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

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
$.ajax({
url:"<%=path%>/hello5.do",
success:function(data){ //data指的是从server打印到浏览器的数据
//jsonString jsonObject
//{"001":{"age":122,"name":"顺利就业"}}
var result= eval("("+data+")");
$.each(result,function(i,dom){
alert(dom.age+"\n"+dom.uname); });
// alert(result["001"]["age"]);
}
});
});
});
</script>
</head> <body>
<input type="button" value="ajax" id="btn"/> </body>
</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. 云计算下PAAS的解析一

    云计算下PAAS的解析一       PaaS是Platform-as-a-Service的缩写,意思是平台即服务. 把服务器平台作为一种服务提供的商业模式.通过网络进行程序提供的服务称之为SaaS( ...

  2. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  3. 极光推送和友盟推送,ios端和安卓端的后端调试设置

    我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用product ...

  4. Intelli IDEA 设置项目编码(Mac)

    Intelli IDEA->Editor->File Encodings

  5. 超千个节点OpenStack私有云案例(1):CERN 5000+ 计算节点私有云

    CERN:欧洲核子研究组织 本文根据以下几篇文章整理而来: https://www.openstack.org/summit/tokyo-2015/videos/presentation/unveil ...

  6. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  7. 利用HAProxy代理SQL Server的AlwaysOn辅助副本

    利用HAProxy代理SQL Server的AlwaysOn辅助副本 公司最近数据库升级到SQL Server2014 ,并部署了alwayson高可用集群 机房内有三套程序需要读取数据库 第一套:主 ...

  8. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

  9. 页面元素坐标和偏移(clientX/pageX/screenX/layerX/offsetWidth/scrollWidth/clientWidth等)相关整理

    鼠标事件都是在特定位置发生的,我们可以通过event事件对象的各种属性来获得事件发生的坐标位置,有相对于视口的,有相对于整个文档的,同样页面元素的位置也有相对视口的,也有滚动后的,这些都比较容易混淆, ...

  10. CSharpGL(10)两个纹理叠加

    CSharpGL(10)两个纹理叠加 本文很简单,只说明如何用shader实现叠加两个纹理的效果. 另外,最近CSharpGL对渲染框架做了修改,清理一些别扭的内容(DoRender()前后的事件都去 ...