文档章节

java返回JSON或JSONP数据

落雨萧萧
 落雨萧萧
发布于 2015/01/16 09:25
字数 332
阅读 90
收藏 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
JSONP是不是只和浏览器有关?

Java EE 7中有一个标准JSONP-1.0,JSONP是不是也利用JSON的数据格式? 但是JSONP是不是只和浏览器有关? 我如果使用JSON格式通过Restful传输数据,但是不用浏览器访问,是不是用不着JSONP?...

文心雕码
2015/05/15
188
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

没有更多内容

加载失败,请刷新页面

加载更多

起薪2万的爬虫工程师,Python需要学到什么程度才可以就业?

爬虫工程师的的薪资为20K起,当然,因为大数据,薪资也将一路上扬。那么,Python需要学到什么程度呢?今天我们来看看3位前辈的回答。 1、前段时间快要毕业,而我又不想找自己的老本行Java开发...

糖宝lsh
19分钟前
1
0
携手开发者共建云生态 首届腾讯云+社区开发者大会在京举办

本文由云+社区发表 北京时间12月15日,由腾讯云主办,极客邦科技、微信、腾讯TEG协办的首届腾讯云+社区开发者大会在北京朝阳悠唐皇冠假日酒店举办。在会上,腾讯云发布了重磅产品开发者平台以...

腾讯云加社区
40分钟前
1
0
人工智能时代员工如何证明其IT工作价值

机器人可以取代你的工作吗?你能帮助机器人完成它的工作吗?如果你正在考虑自己的职业生涯以及今后将如何发展,那么应该询问自己这些问题了。 机器人可以取代你的工作吗?你能帮助机器人完成它的...

Linux就该这么学
41分钟前
2
0
CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linuxCool
52分钟前
3
0
使用Autowired和Qualifier解决多个相同类型的bean如何共存的问题

注意: 实现类UserServiceImpl,MyUserServiceImpl 需要区分:@Service("userServicel") @Service("myUserService") https://blog.csdn.net/russle/article/details/80287763......

qimh
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部