




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSON 是一个插件,它允许我们在JavaScript中异步调用Action,它提供了一个json的返回结果类型(ResultType),只要为Action指定类型为json返回结果类型,那么这个响应结果不需要返回给任何视图层,JSON会将Action里的状态信息序列化为JSON指定格式的数据,并将该数据返回给JAVASCRIPT,这样可以完成AJAX的应用交互.要应用 JSON 插件,首先需要到/p/jsonplugin/downloads/list下载最新JSON插件,我这里下载的是jsonplugin-0.33.jar ,将该文件拷到WEB工程的LIB目录,当然还需要下载Struts2 类库,可以到/download.cgi#struts2014这里去下载,下载完后解压缩,将JAR拷到WEB工程的LIB目录,不能少于以下几个JAR文件(struts2-api-2.0.5.jar、struts2-core-2.0.5.jar、ognl-2.6.9.jar、xwork-2.0.0.jar、commons-logging-1.1.jar、freemarker-2.3.8.jar,具体文件名视版本而定),接下来我们可以写个应用来试验,本例程分为二步来写,第一步实现返回一个结果对象,第二步实现返回一个结果列表,首先来看下返回结果对象的实现.我们需要先建立一个JavaBean 为值对象,用来将用户的基本数据封装进去,该实体在结果对象和结果列表中都会使用到Users.java 代码如下:Java代码1. packagecom.jsontostruts2.vo;2. 3. /*4. *5. *创建人:ChenTao6. *7. *创建日期:2009-5-18下午05:24:488. *9. */10. publicclassUsers11. 12. privateIntegeruserId;13. 14. privateStringuserName;15. 16. privateStringsex;17. 18. publicUsers()19. 20. 21. /get.set.略.22. 实现 UserAction.java 源码如下:Java代码1. packagecom.jsontostruts2.action;2. 3. importcom.googlecode.jsonplugin.annotations.JSON;4. importcom.jsontostruts2.vo.Users;5. importcom.opensymphony.xwork2.ActionSupport;6. 7. /*8. *9. *创建人:ChenTao10. *11. *创建日期:2009-5-18下午05:22:5012. *13. */14. SuppressWarnings(serial)15. publicclassUserActionextendsActionSupport16. 17. privateUsersusers;18. 19. JSON(name=USER)20. publicUsersgetUsers()21. returnusers;22. 23. 24. publicvoidsetUsers(Usersusers)25. this.users=users;26. 27. 28. Override29. publicStringexecute()throwsException30. users=newUsers();31. users.setUserId(1);32. users.setUserName(ctojxzsycztao);33. users.setSex(男人);34. returnSUCCESS;35. 36. 37. 接下来我们需要配置 struts.xml 文件,为了在现下面不再重复写该文件,这里我将结果对象和列表的请求控制一并贴上来,文件内容:Xml代码1. 2. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 能后创建web.xml 和 userjson.jsp:Xml代码1. web.xml:2. 3. 7. 8. 9. Struts210. 11. org.apache.struts2.dispatcher.FilterDispatcher12. 13. 14. 15. Struts216. *.action17. 18. 19. Struts220. *.jsp21. 22. 23. 24. index.jsp25. 26. userjson.jsp :Html代码1. 2. 3. 4. 5. json返回对象处理6. 7. varxmlHttp=false;8. try9. xmlHttp=newActiveXObject(msxml2.XMLHTTP);10. catch(e1)11. try12. xmlHttp=newActiveXObject(microsoft.XMLHTTP);13. catch(e2)14. try15. xmlHttp=newXMLHttpRequest();16. catch(e3)17. xmlHttp=false;18. 19. 20. 21. if(!xmlHttp)22. alert(createxmlHttpRequestfail);23. 24. functionjsonResult()25. xmlHttp.onreadystatechange=function()26. if(xmlHttp.readyState=4)27. /将JSON对象转换为JSON字符串,需要注意调用eval函数时必须使用(和)将JSON字符串括起来,否28. 29. 则会出错30. varuserObj=eval(+xmlHttp.responseText+);31. varuserStr=;32. userStr+=userId+userObj.USER.userId+;33. userStr+=(userName+userObj.USER.userName+);34. userStr+=(sex+userObj.USER.sex+);35. userStr+=;36. document.getElementById(jsonDiv).innerHTML=userStr;37. 38. 39. xmlHttp.open(POST,userJson.action,true);40. xmlHttp.send(null);41. 42. 43. 44. 45. 46. 47. 48. 现在你可以将应用发布到你的容器当中输入http:/localhost:8080/struts2ToJson/userjson.jsp点show,这个时候你可以看到你想要的结果,接来实现下返回列表的做法,当然与返回对象会有所不同,我们需要将一个List对象转换为一个JSON规范的字符串,能后发送给客户端的JS,首先建立一个将List 转换为指定字符串的工具类,该工具是在一个无意间从网上看到就拿来用了,经过少许修改,为了减少代码行数我将只贴出适用于本示例的代码:JsonUtil.java :Java代码1. packagecom.jsontostruts2.util;2. 3. importjava.beans.IntrospectionException;4. importjava.beans.Introspector;5. importjava.beans.PropertyDescriptor;6. importjava.util.List;7. 8. /*9. *10. *authorChenTao11. *12. *Date2009-5-18下午05:47:2713. *14. */15. publicclassJsonUtil16. 17. /*18. *paramobject19. *任意对象20. *returnjava.lang.String21. */22. publicstaticStringobjectToJson(Objectobject)23. StringBuilderjson=newStringBuilder();24. if(object=null)25. json.append();26. elseif(objectinstanceofString|objectinstanceofInteger)27. json.append().append(String)object).append();28. else29. json.append(beanToJson(object);30. 31. returnjson.toString();32. 33. 34. /*35. *功能描述:传入任意一个javabean对象生成一个指定规格的字符串36. *37. *parambean38. *bean对象39. *returnString40. */41. publicstaticStringbeanToJson(Objectbean)42. StringBuilderjson=newStringBuilder();43. json.append();44. PropertyDescriptorprops=null;45. try46. props=Introspector.getBeanInfo(bean.getClass(),Object.class)47. .getPropertyDescriptors();48. catch(IntrospectionExceptione)49. 50. if(props!=null)51. for(inti=0;iprops.length;i+)52. try53. Stringname=objectToJson(propsi.getName();54. Stringvalue=objectToJson(propsi.getReadMethod().invoke(bean);55. json.append(name);56. json.append(:);57. json.append(value);58. json.append(,);59. catch(Exceptione)60. 61. 62. json.setCharAt(json.length()-1,);63. else64. json.append();65. 66. returnjson.toString();67. 68. 69. /*70. *功能描述:通过传入一个列表对象,调用指定方法将列表中的数据生成一个JSON规格指定字符串71. *72. *paramlist73. *列表对象74. *returnjava.lang.String75. */76. publicstaticStringlistToJson(Listlist)77. StringBuilderjson=newStringBuilder();78. json.append();79. if(list!=null&list.size()0)80. for(Objectobj:list)81. json.append(objectToJson(obj);82. json.append(,);83. 84. json.setCharAt(json.length()-1,);85. else86. json.append();87. 88. returnjson.toString();89. 90. UserListAction.java:Java代码1. packagecom.jsontostruts2.action;2. 3. importjava.util.ArrayList;4. importjava.util.List;5. 6. importcom.googlecode.jsonplugin.annotations.JSON;7. importcom.jsontostruts2.util.JsonUtil;8. importcom.jsontostruts2.vo.Users;9. importcom.opensymphony.xwork2.ActionSupport;10. 11. /*12. *13. *创建人:ChenTao14. *15. *创建日期:2009-5-18下午05:45:4216. *17. */18. SuppressWarnings(serial)19. publicclassUserListActionextendsActionSupport20. 21. /*用于存放JSON生成后的字符串结果*/22. privateStringjsonResult;23. 24. JSON(name=JSONRESULT)25. publicStringgetJsonResult()26. returnjsonResult;27. 28. 29. publicvoidsetJsonResult(StringjsonResult)30. this.jsonResult=jsonResult;31. 32. 33. Override34. publicStringexecute()throwsException35. ListuserList=newArrayList();36. Usersusers=newUsers();37. users.setUserId(1);38. users.setUserName(ctojxzsycztao);39. users.setSex(男人);40. userList.add(users);41. users=null;42. users=newUsers();43. users.setUserId(2);44. users.setUserName(rain);45. users.setSex(女人);46. userList.add(users);47. users=null;48. users=newUsers();49. users.setUserId(3);50. users.setUserName(mimi);51. users.setSex(女人);52. userList.add(users);53. jsonResult=JsonUtil.listToJson(userList);54. System.out.println(jsonResult);55. returnSUCCESS;56. 57. 接下来将要写一个jsonList.JSP页面来将结果承现给用户Html代码1. 2. 3. 4. 5. json返回列表处理6. 7. varxmlHttp=false;8. try9. xmlHttp=newActiveXObject(msxml2.XMLHTTP);10. catch(e1)11. try12. xmlHttp=newActiveXObject(microsoft.XMLHTTP);13. catch(e2)14. try15. xmlHttp=newXMLHttpRequest();16. catch(e3)17. xmlHttp=false;18. 19. 20. 21. if(!xmlHttp)22. alert(createxmlHttpRequestfail);23. 24. functionjsonListResult()25. xmlHttp.onrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智慧校园电脑室一体化购置与安装服务合同
- 2025房地产项目社区商业布局与运营管理服务合同
- 2025版商业综合体水电暖安装与运营管理合同
- 2025年度文化创意产品开发委托合同
- 2025便利店智能货架设备采购与服务合同模板
- 语言开发理论知识培训课件
- 2025企业合作招标投标合同范本(合同协议书)
- 红酒品酒师知识培训内容课件
- 2025担保公司贷款合同模板范文
- 2025标准区域代理合同模板
- 牙体牙髓病治疗常用器械及其使用-课件
- 机动车维修竣工出厂合格证样式
- 广东省地质灾害危险性评估报告
- GB/T 8566-2007信息技术软件生存周期过程
- GB/T 32486-2016舞台LED灯具通用技术要求
- 锚杆工程隐蔽验收记录
- 整套教学课件《现代心理与教育统计学》研究生
- 油漆安全技术说明书(MSDS)
- 基层医院如何做好临床科研课件
- RBA(原EICC)ERT应急准备与响应培训课件
- 食品安全知识竞赛参考题库500题(含答案)
评论
0/150
提交评论