Struts2通过JSON实现对象与列表返回示例

3星 · 超过75%的资源 需积分: 10 13 下载量 6 浏览量 更新于2024-09-19 收藏 49KB DOCX 举报
在Struts2框架中,利用JSON进行数据交换和异步通信是一种常见的做法,特别是在构建Web应用程序时,特别是在需要与JavaScript前端进行交互的场景中。本文档主要讲解如何在Struts2中通过JSON插件实现返回对象和列表。 首先,你需要了解什么是JSON(JavaScript Object Notation)。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它允许服务器将数据作为JavaScript对象发送给客户端,使得前后端数据交互变得更加方便。 在Struts2中,要启用JSON支持,你需要下载并集成以下组件: 1. JSON插件:从Google Code(现已停止维护,但可以从GitHub等替代资源获取)下载jsonplugin-0.33.jar或更高版本,将其放入Web工程的LIB目录。 2. Struts2类库:访问Apache Struts2官方网站(http://struts.apache.org/download.cgi#struts2014)下载最新的Struts2核心库,包括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等,同样放入WEB工程的LIB目录。 接下来,我们通过一个简单的例子来演示如何在Action中实现JSON返回对象和列表: 返回对象: 在Struts2中,创建一个JavaBean(如Users.java)作为值对象,用于存储用户数据。例如: ```java package com.jsontostruts2.vo; public class Users { private Integer userId; private String userName; private String sex; public Users() {} // getter和setter方法省略 } ``` 在Action中,你可以创建一个实例并设置属性,然后设置ResultType为`json`,如下所示: ```java package com.jsontostruts2.actions; import com.jsontostruts2.vo.Users; import org.apache.struts2.ServletActionContext; import org.apache.struts2.json.JSONResult; public class UserAction extends ActionSupport { private Users user = new Users(); // 方法体,比如填充用户数据 public String getUser() { user.setUserId(1); user.setUserName("张三"); user.setSex("男"); // 设置返回结果为JSON ServletActionContext.getResponse().setContentType("application/json"); return new JSONResult(user); } } ``` 在这个例子中,当调用`getUser`方法时,Struts2会将`User`对象转换为JSON格式并返回给客户端。 返回结果列表: 对于返回列表,可以在Action中创建一个List<Users>,然后使用`JSONArray`或者`JSONArrayBuilder`将其转换为JSON格式。例如: ```java List<Users> userList = new ArrayList<>(); userList.add(new Users(1, "李四", "女")); userList.add(new Users(2, "王五", "男")); // 使用JSONArrayBuilder JSONArray jsonArray = new JSONArray(); for (Users user : userList) { jsonArray.add(user); } ServletActionContext.getResponse().setContentType("application/json"); return new JSONResult(jsonArray.toJSONString()); ``` 这样,客户端就可以接收到包含多个用户对象的JSON数组。 总结来说,Struts2通过集成JSON插件,能够轻松地处理异步请求并返回JSON格式的数据,无论是单一的对象还是列表。这有助于提升Web应用的性能和用户体验,特别是对于需要频繁与前端交互的场景。