下面是“在Action中以Struts2的方式输出JSON数据的实例”完整攻略,过程中包含两条示例:
1. 添加Struts2-json-plugin插件
在使用Struts2输出JSON格式数据之前,我们需要先添加Struts2-json-plugin插件,该插件可以将Java对象转换为JSON格式数据并输出到浏览器。在pom.xml文件中添加以下代码即可引入该插件:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.5.26</version>
</dependency>
2. 编写Action类
例如我们需要输出一个用户对象的JSON数据,那么可以先编写一个User类,并在Action中创建一个User对象:
public class UserAction extends ActionSupport {
private User user;
public String execute() {
user = new User();
user.setId(1);
user.setUsername("张三");
user.setPassword("123456");
return SUCCESS;
}
// getter、setter方法省略
}
3. 在struts.xml配置文件中配置Action
我们需要在struts.xml配置文件中,将Action的返回类型设置为json,以便Struts2能够识别它返回的是JSON格式数据并使用json插件进行转换。在struts.xml中添加以下配置即可:
<action name="user" class="com.example.UserAction">
<result name="success" type="json">
<param name="root">user</param>
</result>
</action>
此处的“root”参数表示将要输出的JSON数据的根节点名称,即User对象名称。
4. 在JSP页面中使用Ajax调用Action
最后我们可以在JSP页面中使用Ajax调用Action,并将Action返回的JSON数据解析并显示出来。以下是一个简单的JSP代码示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输出JSON数据示例</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<div id="user"></div>
<script>
$(function() {
$.get("user.action", function(data) {
var user = JSON.parse(data);
$("#user").append("用户ID:" + user.id + "<br>用户名:" + user.username + "<br>密码:" + user.password);
});
});
</script>
</body>
</html>
该代码使用jQuery的get方法调用user.action,获取Action返回的JSON格式数据,并解析成JavaScript对象。最后将用户对象的数据显示在页面上。
5. 处理列表类型的JSON数据
除了输出单个对象的JSON格式数据外,还有可能输出列表类型的JSON格式数据。以下是一个示例:
Action代码:
public class UserListAction extends ActionSupport {
private List<User> userList;
public String execute() {
userList = new ArrayList<>();
userList.add(new User(1, "张三", "123456"));
userList.add(new User(2, "李四", "123456"));
userList.add(new User(3, "王五", "123456"));
return SUCCESS;
}
// getter、setter方法省略
}
struts.xml配置代码:
<action name="userList" class="com.example.UserListAction">
<result name="success" type="json">
<param name="root">userList</param>
</result>
</action>
JSP页面代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输出JSON数据示例</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<div id="userList"></div>
<script>
$(function() {
$.get("userList.action", function(data) {
var userList = JSON.parse(data);
$.each(userList, function(index, user) {
$("#userList").append("用户ID:" + user.id + "<br>用户名:" + user.username + "<br>密码:" + user.password + "<hr>");
});
});
});
</script>
</body>
</html>
以上代码中,Action类返回的是一个User对象列表,struts.xml配置文件中的root节点改为了userList,而在JavaScript代码中使用$.each方法遍历数组并将每个用户对象的数据显示在页面上。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Action中以Struts2的方式输出JSON数据的实例 - Python技术站