日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

springmvc 自定义view支持json和jsonp格式数据返回

發布時間:2024/4/17 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springmvc 自定义view支持json和jsonp格式数据返回 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.如果controlloer上用@ResponseBody注解,則用<mvc:message-converter>里面配置的json解析器進行解析

<mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes" value="text/html;charset=UTF-8"/><property name="features"><array><value>WriteMapNullValue</value><value>WriteNullStringAsEmpty</value></array></property></bean></mvc:message-converters></mvc:annotation-driven>

 

2.如果希望自定義View進行解析,則不能在controller上加 @ResponseBody注解,理由看一.

自定義View進行json和jsonp格式的自動判斷并返回相應的json格式

public class JsonView implements View {private static final String CONTENT_TYPE = "application/json";private static final String RESULT = "result";@Overridepublic String getContentType() {return CONTENT_TYPE;}@Overridepublic void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {if(model != null && model.containsKey(RESULT)){Result result = (Result)model.get(RESULT);if(result != null){ResultUtils.render(result, request, response);}}} }

  

配置ContentNegotiatingViewResolver,進行json解析器選擇

<bean id="contentNegotiationManager"class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"><property name="favorPathExtension" value="true" /><property name="favorParameter" value="true" /><property name="ignoreAcceptHeader" value="true" /><property name="ignoreUnknownPathExtensions" value="false" /><property name="mediaTypes"><map><entry key="json" value="application/json"></entry><entry key="xml" value="application/xml"></entry><entry key="html" value="text/html"></entry></map></property></bean><bean id="contentNegotiatingViewResolver"class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"><property name="order" value="0" /><property name="contentNegotiationManager" ref="contentNegotiationManager"/><property name="useNotAcceptableStatusCode" value="false"/><!-- 設置默認視圖 --><property name="defaultViews"><list><bean class="com.tools.util.JsonView"></bean><bean class="com.tools.util.JsonpView"></bean></list></property><!-- 設置視圖解析器 --><property name="viewResolvers"><list><ref bean="viewResolver"/></list></property></bean>

  

order:如果存在多個viewResolver則order值小的被使用,如果沒有合適的viewResolver則會使用另外的;

favorPathExtension:是否支持擴展名,默認為true(支持),擴展名指的xxx.json、xxx.xml等形式

favorParameter:是否啟用參數支持,默認為true(支持),即xxx?format=json、xxx?format=xml等形式,這里的參數名默認為format,可以通過配置改變。

ignoreAcceptHeader:是否忽略accept header,默認是false(不忽略),即請求時指定的contentType:application/json等,由于我這里要使用擴展名的形式返回,所以把另外兩項都關閉了,可視不同情況,使用不同設置;

mediaTypes:配置擴展名到mimeType的映射,這里配置了json和xml的映射;

defaultViews:配置視圖,這里配置了json和xml的視圖,json使用的jackson;

?

這樣就可以實現不同的文件擴展名用不同的View解析器進行解析

轉載于:https://www.cnblogs.com/sidesky/p/7985836.html

總結

以上是生活随笔為你收集整理的springmvc 自定义view支持json和jsonp格式数据返回的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。