Json在Struts中的轉(zhuǎn)換與傳遞方法
本文主要探討普通數(shù)據(jù)如何快速轉(zhuǎn)換為Json數(shù)據(jù),一共討論2種方法:
首相準(zhǔn)備頁(yè)面和實(shí)體類:
頁(yè)面:
<body> <div id="topLoginDiv"> 用戶名: <input name="user.name" id="loginName" /> 密碼: <input name="user.password" id="loginPassword" /> <label class="ui-green"> <input type="button" name="loginButton" value="登錄" onclick="doLogin();" /> </label> </div> <div id="demo" ></div> </body>
實(shí)體類:
package bean; public class User { private int id; private String userName; private String password; ......省略Get和Set方法 }
方法一:使用JSON轉(zhuǎn)換包進(jìn)行JSON數(shù)據(jù)的轉(zhuǎn)換
第一步,引入相關(guān)相關(guān)包
第二步:頁(yè)面提交及回調(diào)函數(shù)處理結(jié)果。
<script type="text/javascript"> function doLogin(){ var name = $('#loginName').val(); var password = $('#loginPassword').val(); var data1 ={'user.userName':name,'user.password':password}; $.getJSON('user_login.action',data1,function(data){//此處須用$.getJSON來(lái)處理JSON數(shù)據(jù) if(data.flag){ $('#topLoginDiv').html(""); $('#demo').html("當(dāng)前用戶:"+data.user.userName+" "+data.msg); }else{ $('#demo').html(data.msg); } }); } </script>
第三步:Struts2跳轉(zhuǎn)到Action中進(jìn)行JSON的轉(zhuǎn)換《關(guān)鍵步驟》
private User user=new User(); private boolean flag; private String msg; ......省略Get和Set方法 public String login() throws IOException{ if(user.getUserName().equals("admin")&&user.getPassword().equals("123456")){ msg="登陸成功"; flag=true; }else{ msg="登錄失敗,用戶名或密碼錯(cuò)誤!"; flag=false; } Map<String,Object> list = new HashMap<String,Object>();//此處的Map不用get和Set方法 list.put("flag", flag); list.put("msg",msg); if(flag){ list.put("user",user); } ServletActionContext.getResponse().setCharacterEncoding("UTF-8"); ServletActionContext.getResponse().getWriter().print(JSONObject.fromObject(list)); return null;//此處返回值為NULL,不需要再回到ACTION配置中進(jìn)行處理 }
方法二:使用Struts2配置Action進(jìn)行JSON數(shù)據(jù)的轉(zhuǎn)換
第一步:引入包
此種方法只需要在使用Struts2所需包的基礎(chǔ)上引入下面這一個(gè)包即可:
第二步:頁(yè)面提交及回調(diào)函數(shù)處理結(jié)果。參考方法一中的第二步。
第三步:配置Action
<package name="json_default" namespace="/" extends="json-default">//注意此處的extends配置 <action name="user_*" class="Action.userAction" method="{1}"> <result type="json">//此處指明類型 <!-- 參數(shù)root指定要序列化得根對(duì)象 --> <!-- 默認(rèn)將序列化當(dāng)前Action中所有有返回值的getter方法的值 --> <param name="root">list</param> <!-- 參數(shù)includeProperties指定要序列化根對(duì)象中的哪些屬性,多個(gè)屬性以逗號(hào)隔開--> <param name="includeProperties">msg,flag,user,user.userName</param> <!-- 參數(shù)excludeProperties指定要從根對(duì)象中排除的屬性,排除屬性將不被序列化--> <param name="excludeProperties">user.password</param> <!-- 參數(shù)excludeNullProperties指定是否序列化值為空的屬性--> <param name="excludeNullProperties">true</param> </result> </action> </package>
第四步:Struts2跳轉(zhuǎn)到Action中進(jìn)行JSON的轉(zhuǎn)換《關(guān)鍵步驟》
private User user=new User(); private boolean flag; private String msg; private Map<String,Object> list=null;//需要為MAP準(zhǔn)備get和Set方法 ..................省略Get和Set方法 public String login() throws IOException{ if(user.getUserName().equals("admin")&&user.getPassword().equals("123456")){ msg="登陸成功"; flag=true; }else{ msg="登錄失敗,用戶名或密碼錯(cuò)誤!"; flag=false; } list= new HashMap<String,Object>(); list.put("flag", flag); list.put("msg",msg); if(flag){ list.put("user",user); } return "success";//返回值為success確保能跳進(jìn)Action配置文件進(jìn)行數(shù)據(jù)轉(zhuǎn)換
以上這篇Json在Struts中的轉(zhuǎn)換與傳遞方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 詳解Struts2中json 相互引用死循環(huán)解決辦法
- 在Action中以Struts2的方式輸出JSON數(shù)據(jù)的實(shí)例
- struts2通過(guò)action返回json對(duì)象
- struts2+jquery+json實(shí)現(xiàn)異步加載數(shù)據(jù)(自寫)
- ajax+json+Struts2實(shí)現(xiàn)list傳遞實(shí)例講解
- 在Struts2中如何將父類屬性序列化為JSON格式的解決方法
- 關(guān)于struts返回對(duì)象json格式數(shù)據(jù)的方法
- Struts2返回json格式數(shù)據(jù)代碼實(shí)例
相關(guān)文章
java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了java圖片滑動(dòng)登錄驗(yàn)證的相關(guān)原理、實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2019-09-09淺談Spring與SpringMVC父子容器的關(guān)系與初始化
這篇文章主要介紹了淺談Spring與SpringMVC父子容器的關(guān)系與初始化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Java利用Zxing生成二維碼的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Java利用Zxing生成二維碼的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08Java從ftp服務(wù)器上傳與下載文件的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Java從ftp服務(wù)器上傳與下載文件的實(shí)現(xiàn)方法,最近項(xiàng)目中需要實(shí)現(xiàn)將文件先存放到ftp上,需要的時(shí)候再?gòu)膄tp上下載,做的過(guò)程中碰到了問(wèn)題,所以這里總結(jié)下,需要的朋友可以參考下2023-08-08mybatis mybatis-plus-generator+clickhouse自動(dòng)生成代碼案例詳解
這篇文章主要介紹了mybatis mybatis-plus-generator+clickhouse自動(dòng)生成代碼案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Spring Boot示例分析講解自動(dòng)化裝配機(jī)制核心注解
這篇文章主要分析了Spring Boot 自動(dòng)化裝配機(jī)制核心注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-07-07Spring Cloud Feign報(bào)錯(cuò)問(wèn)題解決
這篇文章主要介紹了Spring Cloud Feign報(bào)錯(cuò)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12