【Jsp精品源码栏目提醒】:网学会员为广大网友收集整理了,【精品】Struts2+JSON 实现AJAX 返回对象和列表 - 其它资料,希望对大家有所帮助!
Struts2JSON 实现 AJAX 返回对象和列表 Struts2jsonAjaxStrutsJSPBeanJSON 是一个插件它允许我们在 JavaScript 中异步调用 Action它提供了一个json 的返回结果类型ResultType只要为 Action 指定类型为json 返回结果类型那么这个响应结果不需要返回给任何视图层JSON 会将Action 里的状态信息序列化为 JSON 指定格式的数据并将该数据返回给 JAVASCRIPT这样可以完成 AJAX 的应用交互.要应用 JSON 插件首先需要到http://code.google.com/p/jsonplugin/downloads/list下载最新 JSON 插件我这里下载的是 jsonplugin-0.33.jar 将该文件拷到 WEB 工程的 LIB 目录当然还需要下载 Struts2 类库可以到 http://struts.apache.org/download.cgistruts2014这里去下载下载完后解压缩将 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. package com.jsontostruts2.vo 2. 3. / 4. 5. 创 建 人:ChenTao 6. 7. 创建日期:2009-5-18 下午 05:24:48 8. 9. / 10.public class Users 11. 12.private Integer userId 13. 14.private String userName 15. 16.private String sex 17. 18.public Users 19. 20. 21.// get... set.... 略...... 22.实现 UserAction.java 源码如下:Java 代码 1. package com.jsontostruts2.action 2. 3. import com.googlecode.jsonplugin.annotations.JSON 4. import com.jsontostruts2.vo.Users 5. import com.opensymphony.xwork2.ActionSupport 6. 7. / 8. 9. 创 建 人:ChenTao 10. 11. 创建日期:2009-5-18 下午 05:22:50 12. 13./ 14.SuppressWarningsserial 15.public class UserAction extends ActionSupport 16. 17.private Users users 18. 19.JSONnameUSER 20.public Users getUsers 21.return users 22. 23. 24.public void setUsersUsers users 25.this.users users 26. 27. 28.Override 29.public String execute throws Exception 30.users new Users 31.users.setUserId1 32.users.setUserNamectojxzsycztao 33.users.setSex男人 34.return SUCCESS 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. Struts2 10. 11.org.apache.struts2.dispatcher.FilterDispatcher 12. 13. 14. 15.Struts2 16..action 17. 18. 19.Struts2 20..jsp 21. 22. 23. 24.index.jsp 25. 26.userjson.jsp :Html 代码 1. 2. 3. 4. 44. 45. 46. 47. 48.现在你可以将应用发布到你的容器当中输入http://localhost:8080/struts2ToJson/userjson.jsp 点 show这个时候你可以看到你想要的结果接来实现下返回列表的做法当然与返回对象会有所不同我们需要将一个List 对象转换为一个 JSON 规范的字符串能后发送给客户端的 JS首先建立一个将 List 转换为指定字符串的工具类该工具是在一个无意间从网上看到就拿来用了经过少许修改为了减少代码行数我将只贴出适用于本示例的代码:JsonUtil.java :Java 代码 1. package com.jsontostruts2.util 2. 3. import java.beans.IntrospectionException 4. import java.beans.Introspector 5. import java.beans.PropertyDescriptor 6. import java.util.List 7. 8. / 9. 10. author ChenTao 11. 12. Date 2009-5-18 下午 05:47:27 13. 14./ 15.public class JsonUtil 16. 17./ 18. param object 19. 任意对象 20. return java.lang.String 21./ 22.public static String objectToJsonObject object 23.StringBuilder json new StringBuilder 24.if object null 25.json.append 26. else if object instanceof String object instanceof Integer 27.json.append.appendStringobject.append 28. else 29.json.appendbeanToJsonobject 30. 31.return json.toString 32. 33. 34./ 35. 功能描述:传入任意一个 javabean 对象生成一个指定规格的字符串 36. 37. param bean 38. bean 对象39. return String40./41.public static String beanToJsonObject bean 42.StringBuilder json new StringBuilder43.json.append44.PropertyDescriptor props null45.try 46.props Introspector.getBeanInfobean.getClass Object.class47..getPropertyDescriptors48. catch IntrospectionException e 49.50.if props null 51.for int i 0 i props.length i 52.try 53.String name objectToJsonpropsi.getName54.String value objectToJsonpropsi.getReadMethod.invokebean55.json.appendname56.json.append:57.json.appendvalue58.json.append59. catch Exception e 60.61.62.json.setCharAtjson.length - 1 63. else 64.json.append65.66.return json.toString67.68.69./70. 功能描述:通过传入一个列表对象调用指定方法将列表中的数据生成 一个 JSON 规格指定字符串71.72. param list73. 列表对象74. return java.lang.String75./76.public static String listToJsonList list 77.StringBuilder json new StringBuilder78.json.append79.if list null list.size 0 80.for Object obj : list 81.json.appendobjectToJsonobj 82.json.append 83. 84.json.setCharAtjson.length - 1 85. else 86.json.append 87. 88.return json.toString 89. 90.UserListAction.java:Java 代码 1. package com.jsontostruts2.action 2. 3. import java.util.ArrayList 4. import java.util.List 5. 6. import com.googlecode.jsonplugin.annotations.JSON 7. import com.jsontostruts2.util.JsonUtil 8. import com.jsontostruts2.vo.Users 9. import com.opensymphony.xwork2.ActionSupport 10. 11./ 12. 13. 创 建 人:ChenTao 14. 15. 创建日期:2009-5-18 下午 05:45:42 16. 17./ 18.SuppressWarningsserial 19.public class UserListAction extends ActionSupport 20. 21./ 用于存放 JSON 生成后的字符串结果 / 22.private String jsonResult 23. 24.JSONnameJSONRESULT 25.public String getJsonResult 26.return jsonResult 27. 28. 29.public void setJsonResultString jsonResult 30.this.jsonResult jsonResult 31. 32. 33.Override 34.public String execute throws Exception 35.List userList new ArrayList 36.Users users new Users 37.users.setUserId1 38.users.setUserNamectojxzsycztao 39.users.setSex男人 40.userList.addusers 41.users null 42.users new Users 43.users.setUserId2 44.users.setUserNamerain 45.users.setSex女人 46.userList.addusers 47.users null 48.users new Users 49.users.setUserId3 50.users.setUserNamemimi 51.users.setSex女人 52.userList.addusers 53.jsonResult JsonUtil.listToJsonuserList 54.System.out.printlnjsonResult 55.return SUCCESS 56. 57.接下来将要写一个 jsonList.JSP 页面来将结果承现给用户Html 代码 1. 2. 3. 4. 47. 48. 49. 50. 51.现在将工程重复部署到 WEB 容器启动:在浏览器中输入http://localhost:8080/struts2ToJson/jsonList.jsp 点 show list 按钮看看结果是否正确如果不正确请参考本例程看看有没漏掉部分没有配置进去在以上代码中我们都有看到 JSON 的注解该注解可以改变 JSON 返回结果的属性名好了文章就写到这里需要下载示例的朋友可在附件中下载里面包含有该文章的源代码和相应的 JAR