十、Struts2返回json資料
阿新 • • 發佈:2019-01-09
建立javabean
package blog.csdn.net.mchenys.domain;
import java.util.List;
public class User {
private String username;
private int age;
private List<String> hobby;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<String> getHobby() {
return hobby;
}
public void setHobby(List<String> hobby) {
this.hobby = hobby;
}
}
建立Action
package blog.csdn.net.mchenys.action;
import java. util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import blog.csdn.net.mchenys.domain.User;
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 1L;
// 將會被Struts2序列化為JSON字串的物件
private Map<String, Object> dataMap = new HashMap<String, Object>();
// Struts2序列化指定屬性時,必須有該屬性的getter方法,實際上,如果沒有屬性,而只有getter方法也是可以的
public Map<String, Object> getDataMap() {
return dataMap;
}
public String demo1() {
List<User> uList = new ArrayList<>();
dataMap.put("data", uList);
dataMap.put("status", 0);
dataMap.put("msg", "請求成功");
for (int i = 0; i < 5; i++) {
User u = new User();
u.setUsername("勝哥" + i + "號");
u.setAge(20 + i);
List<String> hobbyList = new ArrayList<>();
hobbyList.add("吃");
hobbyList.add("睡");
hobbyList.add("玩");
u.setHobby(hobbyList);
uList.add(u);
}
return SUCCESS;
}
}
配置Struts2配置檔案
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 包名隨意,只要能和其他包區分開來就可以了
extends:必須繼承json-default
namespace:隨意,但是設定了的話,請求路徑必須要對應上
-->
<package name="test" extends="json-default" namespace="/user">
<!-- action請求名用萬用字元*號表示可以匹配任意字元路徑,配合namespace那就是/user/*
method:響應方法採用{1}讀取name中匹配的字元,1表示第一個*代表的路徑名
-->
<action name="*" class="blog.csdn.net.mchenys.action.TestAction" method="{1}">
<!-- 返回結果型別是 json-->
<result type="json">
<!-- 返回資料為action中定義的map -->
<param name="root">dataMap</param>
<!-- 是否去掉返回值為NULL的properties -->
<param name="excludeNullProperties">true</param>
</result>
</action>
</package>
</struts>
測試,請求該action的demo1方法的完整路徑是http://localhost:8080/shopping/user/demo1,如下所示: