1. 程式人生 > >十、Struts2返回json資料

十、Struts2返回json資料

建立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,如下所示:
在這裡插入圖片描述