文档章节

java返回JSON或JSONP数据

落雨萧萧
 落雨萧萧
发布于 2015/01/16 09:25
字数 332
阅读 85
收藏 0

页面越来越到的采用异步加载数据,现在异步加载数据最流行的是将数据转换为json返回到页面后再做处理,页面上使用Jquery可以很方便的对JSON数据做处理,现在整理下常用的返回JSON数据的方法:

直接将数据放到输出流中:

response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
JSONObject json = new JSONObject();
try {
    json.put("test","test");
    response.getWriter().print(json.toString());
} catch (IOException e) {
    e.printStackTrace();
}

在spring  MVC中输出JSON数据:

@RequestMapping(value = "/searchList")
public @ResponseBody List searchList(ModelMap model,HttpServletRequest requerst, 
    HttpServletResponse response){
    List<Product> productList = null;
    try {
        productList = productService.searchProductList();
    } catch (Exception e) {
	e.printStackTrace();
    }
	return productList;
}

Spring MVC为了保证返回数据编码的统一需要在xml文件中增加配置:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  <property name="messageConverters">
   <list >
    <ref bean="mappingJacksonHttpMessageConverter" />
   </list>
  </property>
 </bean>
 
 <bean id="mappingJacksonHttpMessageConverter"
  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  <property name="supportedMediaTypes">
   <list>
    <value>text/html;charset=UTF-8</value>
   </list>
  </property>
 </bean>

针对有时候需要跨域请求,可以通过JSONP的方式,这个时候可以通过在springXML文件中配置支持的数据格式完成:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1"/>
        <property name="favorPathExtension" value="true"/>
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json"/>
                <entry key="jsonp" value="application/javascript"/>
                <!-- <entry key="xml" value="application/xml" /> -->
            </map>
        </property>
        <!-- 设置为true以忽略对Accept Header的支持-->
        <property name="defaultContentType" value="application/json"></property>
        <property name="defaultViews">
            <list>
                <bean class="com.gochinatv.api.util.CustomMappingJacksonJsonView">
                    <property name="disableCaching" value="false"/>
                </bean>
                <bean class="com.gochinatv.api.util.CustomMappingJacksonJsonpView"/>
            </list>
        </property>
    </bean>


© 著作权归作者所有

共有 人打赏支持
落雨萧萧
粉丝 2
博文 37
码字总数 4263
作品 0
浦东
高级程序员
jquery的ajax和getJson跨域获取json数据

很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了。近日在进行开发时,因为要和第三方公司的一个项目进行数据的共享,因...

度外网络
2012/09/26
0
1
Spring4.1新特性——Spring MVC增强

1、GroovyWebApplicationContext 在Spring 4.1之前没有提供Web集成的ApplicationContext,在《Spring4新特性——Groovy Bean定义DSL》中我们自己去实现的com.sishuok.spring4.context.suppo...

莱茵河水怪v241Beta
2015/07/23
0
0
Jquery跨域调用(JSONP)遇到error问题的解决

之前Jquery的跨域调用一直没有解决,不知道为什么老是执行error里的语句,今天花了点时间研究了一下,终于把问题解决了。 关键的地方是返回的字符串,返回的字符串必须包含jsonp的回调函数名...

Eric_HSBC
2013/10/23
0
1
Ajax通过jsonp实现跨域访问,访问成功但走error不走success

刚开始json的格式: [plain] view plain copy {"dateli":[{"intro":"固定式","remarks":"割发代首","commId":"0006adc3-2b4e-4bbd-9e9e-45fa9b096a4d","price":"43.0","mdRelationId":"cd9e37......

xiaomin0322
05/30
0
0
《编写可维护的 JavaScript》读书笔记第9章:将配置数据从代码中分离出来

什么是配置数据 URL 展示给用户的字符串 重复的值 设置(如每页配置项) 任何可能发生变更的值 // 将配置数据埋藏在代码中function validate(value) { if (!value) { alert("Invalid value")...

张前程
2013/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux 中不适用功能键切换TTY

本简要指南介绍了在类 Unix 操作系统中如何在不使用功能键的情况下切换 TTY。在进一步讨论之前,我们将了解 TTY 是什么。正如在 AskUbuntu 论坛的一个答案[1]中所提到的,TTY这个词来自 Tele...

问题终结者
12分钟前
0
0
OSChina 周三乱弹 —— 我自己总觉得我的灵魂有毒

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @Devoes :分享王菲的单曲《匆匆那年 (Fleet of Time)》 《匆匆那年 (Fleet of Time)》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) 天长地...

小小编辑
18分钟前
3
3
深度学习与图像处理实例:人像背景虚化与背景替换

简单人像背景虚化处理思路如下: 对图像内容分割,提取人像,背景 背景模糊处理 人像与模糊处理后的背景融合 本实例使用DeepLabV3图像分割深度学习模型实现。代码如下: import numpy as np...

IOTService
昨天
0
0
八月新增开源项目:假装自己是图形界面的 Git 命令行工具

每月新增开源项目。顾名思义,每月更新一期。我们会从社区上个月新收录的开源项目中,挑选出有价值的、有用的、优秀的、或者好玩的开源项目来和大家分享。数量不多,但我们力求推荐的都是精品...

编辑部的故事
昨天
8
0
20180918 find命令与Linux文件扩展名

命令find 用来查找搜索文件。 搜索文件相关命令: which 从环境变量里的目录中去搜索 whereis(不常用) 从一个固定的库中搜索 locate(需要单独安装 yum install -y mlocate) 查询时会从/var/...

野雪球
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部