java返回JSON或JSONP数据

页面越来越到的采用异步加载数据,现在异步加载数据最流行的是将数据转换为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>


转载于:https://my.oschina.net/hanweifeng/blog/368377

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值