從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理

從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理

ID:36295957

大?。?12.50 KB

頁數(shù):12頁

時間:2019-05-08

從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理_第1頁
從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理_第2頁
從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理_第3頁
從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理_第4頁
從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理_第5頁
資源描述:

《從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、從源代碼角度看Struts2返回JSON數(shù)據(jù)的原理日期:2012-01-03來源:楊勝寒分享至:前面一篇文章其實(shí)只是介紹了如何在Struts2中返回JSON數(shù)據(jù)到客戶端的具體范例而無關(guān)其原理,內(nèi)容與標(biāo)題不符惹來標(biāo)題黨嫌疑確實(shí)是筆者發(fā)文不夠嚴(yán)謹(jǐn),目前已修改標(biāo)題,與內(nèi)容匹配。本文將從struts2-json插件的源碼角度出發(fā),結(jié)合之前的應(yīng)用范例來說明struts2-json插件返回JSON數(shù)據(jù)的原理。用winrar打開struts2-json-plugin-xx.jar(筆者使用版本為2.1.8.1),根目錄下有一個struts-plu

2、gin.xml,這個文件想必大家都很了解,不做過多介紹了。打開該文件,內(nèi)容非常簡答,如下:

3、前文提到,如果要使用Struts2返回JSON數(shù)據(jù)到客戶端,那么action所在的package必須繼承自

4、json-default包,原因就在上邊的配置文件中:這里的配置文件指定了該插件的包名為json-default,所以要使用該插件的功能,就必須繼承自該包——json-default。上面的配置文件中,配置了兩個類:org.apache.struts2.json.JSONResult和org.apache.struts2.json.JSONInterceptor,前者是結(jié)果類型,后者是一個攔截器。簡單說一下,org.apache.struts2.json.JSONResult負(fù)責(zé)將action中的“某些”(通過相關(guān)參數(shù)可以指定,前文

5、已有詳述)或action中所有"可獲取"(有g(shù)etter方法的屬性或一個有返回值的getter方法的返回值)數(shù)據(jù)序列化成JSON字符串,然后發(fā)送給客戶端;org.apache.struts2.json.JSONInterceptor負(fù)責(zé)攔截客戶端到j(luò)son-default包下的所有請求,并檢查客戶端提交的數(shù)據(jù)是否是JSON類型,如果是則根據(jù)指定配置來反序列化JSON數(shù)據(jù)到action中的bean中(說的有點(diǎn)簡單,其實(shí)該攔截器內(nèi)部對數(shù)據(jù)做了很多判斷),攔截器不是本文的重點(diǎn),介紹到此為止??匆粡垐D,或許能夠更加清晰明了的說明JSON插件

6、執(zhí)行的流程:下面重點(diǎn)說說org.apache.struts2.json.JSONResult。首先看一下org.apache.struts2.json.JSONResult源碼的核心部分:部分屬性privateStringdefaultEncoding="ISO-8859-1";//默認(rèn)的編碼privateListincludeProperties;//被包含的屬性的正則表達(dá)式,這些屬性的值將被序列化為JSON字符串,傳送到客戶端privateListexcludeProperties;//被排除

7、的屬性的正則表達(dá)式,這些屬性的值在對象序列化時將被忽略privateStringroot;//根對象,即要被序列化的對象,如不指定,將序列化action中所有可被序列化的數(shù)據(jù)privatebooleanwrapWithComments;//是否包裝成注釋privatebooleanprefix;//前綴privatebooleanenableGZIP=false;//是否壓縮privatebooleanignoreHierarchy=true;//是否忽略層次關(guān)系,即是否序列化對象父類中的屬性privatebooleanignore

8、Interfaces=true;//是否忽略接口privatebooleanenumAsBean=false;//是否將枚舉類型作為一個bean處理privatebooleanexcludeNullProperties=false;/

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。