实现Struts2通过Action返回JSON对象,可以按照以下步骤进行操作:
步骤一:导入依赖
在项目的pom.xml
中导入struts2-json-plugin
依赖,以便能够支持JSON格式的数据:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.5.22</version>
</dependency>
步骤二:配置Action
在Action的struts.xml
中进行配置,指定返回类型为json
,并设置需要序列化成JSON的数据。如下:
<package name="default" extends="struts-default">
<action name="getJsonData" class="example.action.TestJsonAction">
<result type="json">
<param name="root">jsonData</param>
</result>
</action>
</package>
步骤三:编写Action
在编写Action的Java类时,需要实现com.opensymphony.xwork2.ActionSupport
接口,并提供一个返回JSON数据的方法。在这个方法中将需要序列化成JSON的数据存放到一个Map
对象中,并将这个Map
对象的名称作为返回值返回。
public class TestJsonAction extends ActionSupport {
private Map<String, String> jsonData;
public String execute() throws Exception {
jsonData = new HashMap<String, String>();
jsonData.put("name", "Zhangsan");
jsonData.put("age", "20");
jsonData.put("address", "beijing");
return SUCCESS;
}
public Map<String, String> getJsonData() {
return jsonData;
}
public void setJsonData(Map<String, String> jsonData) {
this.jsonData = jsonData;
}
}
示例一:返回简单的JSON对象
public class TestJsonAction extends ActionSupport {
private Map<String, String> jsonData;
public String execute() throws Exception {
jsonData = new HashMap<String, String>();
jsonData.put("name", "Zhangsan");
jsonData.put("age", "20");
jsonData.put("address", "beijing");
return SUCCESS;
}
public Map<String, String> getJsonData() {
return jsonData;
}
public void setJsonData(Map<String, String> jsonData) {
this.jsonData = jsonData;
}
}
使用浏览器访问URL:http://localhost:8080/struts2-json-example/getJsonData.action,返回结果如下:
{"name":"Zhangsan", "age":"20", "address":"beijing"}
示例二:返回嵌套的JSON对象
public class TestJsonAction extends ActionSupport {
private Map<String, Object> jsonData;
public String execute() throws Exception {
jsonData = new HashMap<String, Object>();
jsonData.put("name", "Zhangsan");
jsonData.put("age", "20");
jsonData.put("address", new HashMap<String, String>() {{
put("province", "beijing");
put("city", "beijing");
}});
return SUCCESS;
}
public Map<String, Object> getJsonData() {
return jsonData;
}
public void setJsonData(Map<String, Object> jsonData) {
this.jsonData = jsonData;
}
}
使用浏览器访问URL:http://localhost:8080/struts2-json-example/getJsonData.action,返回结果如下:
{"name":"Zhangsan", "age":"20", "address": {"province":"beijing", "city":"beijing"}}
这就是使用Struts2通过Action返回JSON对象的完整攻略,可以根据需要调整代码中需要序列化成JSON的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2通过action返回json对象 - Python技术站