精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SPRING MVC3.2案例講解

http://www.oschina.net/question/129540_25218

 

HttpMessageConverter(org.springframework.http.converter.HttpMessageConverter接口) 示例 :

 

StringHttpMessageConverter 從請求和響應讀取/編寫字符串。默認情況下,它支持媒體類型 text/* 并使用文本/無格式內容類型編寫。 


FormHttpMessageConverter 從請求和響應讀取/編寫表單數據。默認情況下,它讀取媒體類型 application/x-www-form-urlencoded 并將數據寫入 MultiValueMap<String,String>。 


MarshallingHttpMessageConverter 使用 Spring 的 marshaller/un-marshaller 讀取/編寫 XML 數據。它轉換媒體類型為 application/xml 的數據。 


MappingJacksonHttpMessageConverter 使用 Jackson 的 ObjectMapper 讀取/編寫 JSON 數據。它轉換媒體類型為 application/json 的數據。 


AtomFeedHttpMessageConverter 使用 ROME 的 Feed API 讀取/編寫 ATOM 源。它轉換媒體類型為 application/atom+xml 的數據。 

 

RssChannelHttpMessageConverter 使用 ROME 的 feed API 讀取/編寫 RSS 源。它轉換媒體類型為 application/rss+xml 的數據。 

 

SourceHttpMessageConverter  處理請求類型 Request type: text/xml, application/xml

從HTTP request和response讀寫javax.xml.transform.Source .支持 DOMSource, SAXSource,StreamSource .

BufferedImageHttpMessageConverter  處理請求類型 Request type:支持Java I/O API,

 

從HTTP request和response中讀寫java.awt.image.BufferedImage 

 

以上是IBM開源資源庫中的一篇文章,我在這篇文章的基礎上,結合springmvc-showcase總結更詳細更通俗的講解!!

 

 

首先進行準備工作:

  1. <mvc:annotation-driven/> 該片段默認就加載了HttpMessageConverter接口的7種實現(如:StringHttpMessageConverter,MappingJacksonHttpMessageConverter 等)
  2. 進行請求提交時,需要指定MediaType,不同的MediaType對應的是不同的HttpMessageConverter接口實現類;見MappingJackson2HttpMessageConverter類只接受application/json類型的請求;
Java代碼  
  1. public class MappingJackson2HttpMessageConverter extends  
  2.         AbstractHttpMessageConverter implements GenericHttpMessageConverter {  
  3.   
  4.     public MappingJackson2HttpMessageConverter() {  
  5.           
  6.         super(new MediaType[] {  
  7.                 new MediaType("application", "json", DEFAULT_CHARSET),  
  8.                 new MediaType("application", "*+json", DEFAULT_CHARSET) });  
  9.         System.out.println("dsfsfsf");  
  10.         objectMapper = new ObjectMapper();  
  11.         prefixJson = false;  
  12.     }  
  13.   
  14. 。。。。  
  15. }  

 

   如果進行請求提交和設置mediaType呢?見JS代碼:設置AJAX提交的contentType屬性即可;同時另外一點要注意:JSON字符串中的KEY,VALUE必須使用雙引號,不可以使用單引號;

Java代碼  
  1. $.ajax({  
  2.                 type : "POST",///springmvc2/page1.mvc  
  3.                 url : "/springmvc2/json.mvc",//http://127.0.0.1:7001/springmvc2/json.mvc  
  4.                 contentType : "application/json",  
  5.                 data: '{"name":"1212","pwd":"我們"}' ,  
  6.                 dataType:'json',  
  7.                 success: function(msg){  
  8.                      alert( "Data Saved: " +msg.name   );  
  9.                    }  
  10.             });  
  11.   
  12.   
  13.     $("form.readJsonForm").submit(function() {  
  14.         var form = $(this);  
  15.         var button = form.children(":first");  
  16.         <span style="background-color: #ff0000;">var data = form.hasClass("invalid") ?  
  17.                 "{ \"foo\": \"bar\" }" :   
  18.                 "{ \"foo\": \"bar\", \"fruit\": \"apple\" }";</span>  
  19.         $.ajax({ type: "POST", url: form.attr("action"), <span style="background-color: #ff0000;">data: data, contentType: "application/json",</span> dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});  
  20.         return false;  
  21.     });  

 

這些提交的信息如何能夠查看呢?使用chrome內核的瀏覽器的開發者工具:



 

最后我們如何來控制我們的數據返回格式呢?

http://127.0.0.1:8010/messageconverters/json 它返回的XML格式的內容,其實是MarshallingHttpMessageConverter 轉化后的結果,那我們如何指定轉化的數據類型的(JSON OR XML)

 



 

 

http://127.0.0.1:8010/messageconverters/json.JSON;使用后綴指出他的返回數據格式



 

 

http://127.0.0.1:8010/messageconverters/json 在requestHeader設置

Accept:
application/json

 JS代碼如下:

Java代碼  
  1. $("a.writeJsonLink").click(function() {  
  2.         var link = $(this);  
  3.         $.ajax({ url: this.href,  
  4.             beforeSend: function(req) {  
  5.                 if (!this.url.match(/\.json$/)) {  
  6.                     <span style="background-color: #ff0000;">req.setRequestHeader("Accept", "application/json");</span>  
  7.                 }  
  8.             },  
  9.             success: function(json) {  
  10.                 MvcUtil.showSuccessResponse(JSON.stringify(json), link);  
  11.             },  
  12.             error: function(xhr) {  
  13.                 MvcUtil.showErrorResponse(xhr.responseText, link);  
  14.             }});  
  15.         return false;  
  16.     });  

 


 

 

本文中講解了MappingJackson2HttpMessageConverter的使用,其他的 HttpMessageConverter都是類似的用法,具體可以看實例。另外官方的案例中的POM缺少相關的依賴內容,請下載我上傳的壓縮包,里面的JAR依賴是完整的。

 

總結本文內容如下:

1.如何使用HttpMessageConverter進行請求數據的轉化

2.如何使用HttpMessageConverter轉化輸出數據的格式

3.如何使用開發工具進行相關屬性的查看

 

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
解析Json之MappingJackson2HttpMessageConverter使用方法
Spring MVC之@RequestBody, @ResponseBody 詳解
RestTemplate 微信接口 text/plain HttpMessageConverter
Spring Boot中如何擴展XML請求和響應的支持
Spring 注解學習手札(七) 補遺——@ResponseBody,@RequestBody,@PathVariable
JSON Views 高級用法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 峡江县| 墨脱县| 麻阳| 米泉市| 兴海县| 景德镇市| 宁蒗| 拜泉县| 静安区| 垣曲县| 西乌珠穆沁旗| 股票| 营山县| 蛟河市| 类乌齐县| 东辽县| 旺苍县| 辽宁省| 曲阜市| 昌吉市| 青田县| 和硕县| 康保县| 吴川市| 兴义市| 武清区| 敖汉旗| 株洲县| 习水县| 波密县| 临潭县| 白沙| 华坪县| 资阳市| 阳西县| 洱源县| 西畴县| 察隅县| 平和县| 平安县| 紫金县|