日期:2014-05-16  浏览次数:20381 次

Struts+Json实例 Example
1. Get dependency library

Get the struts2-json-plugin.jar library.
 pom.xml





    <!-- Struts 2 -->
    <dependency>
          <groupId>org.apache.struts</groupId>
	  <artifactId>struts2-core</artifactId>
	  <version>2.1.8</version>
    </dependency>
 
    <!-- Struts 2 JSON Plugins -->
    <dependency>
          <groupId>org.apache.struts</groupId>
	  <artifactId>struts2-json-plugin</artifactId>
	  <version>2.1.8</version>
    </dependency>
2. Action (JSON)

This is an Action class which will be converted into JSON format.





package com.mkyong.common.action;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.opensymphony.xwork2.Action;
 
public class JSONDataAction{
 
	private String string1 = "A";
	private String[] stringarray1 = {"A1","B1"};
	private int number1 = 123456789;
	private int[] numberarray1 = {1,2,3,4,5,6,7,8,9};
	private List<String> lists = new ArrayList<String>();
	private Map<String, String> maps = new HashMap<String, String>();
 
	//no getter method, will not include in the JSON
	private String string2 = "B";
 
	public JSONDataAction(){
		lists.add("list1");
		lists.add("list2");
		lists.add("list3");
		lists.add("list4");
		lists.add("list5");
 
		maps.put("key1", "value1");
		maps.put("key2", "value2");
		maps.put("key3", "value3");
		maps.put("key4", "value4");
		maps.put("key5", "value5");
	}
 
	public String execute() {
               return Action.SUCCESS;
        }
 
	public String getString1() {
		return string1;
	}
 
	public void setString1(String string1) {
		this.string1 = string1;
	}
 
	public String[] getStringarray1() {
		return stringarray1;
	}
 
	public void setStringarray1(String[] stringarray1) {
		this.stringarray1 = stringarray1;
	}
 
	public int getNumber1() {
		return number1;
	}
 
	public void setNumber1(int number1) {
		this.number1 = number1;
	}
 
	public int[] getNumberarray1() {
		return numberarray1;
	}
 
	public void setNumberarray1(int[] numberarray1) {
		this.numberarray1 = numberarray1;
	}
 
	public List<String> getLists() {
		return lists;
	}
 
	public void setLists(List<String> lists) {
		this.lists = lists;
	}
 
	public Map<String, String> getMaps() {
		return maps;
	}
 
	public void setMaps(Map<String, String> maps) {
		this.maps = maps;
	}
 
}
3. struts.xml

To output the JSON data, you need to declared a package which extends the “json-default“, and result type as “json“.


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
 
   <constant name="struts.devMode" value="true" />
 
   <package name="default" namespace="/" extends="json-default">
      <action name="getJSONResult" 
           class="com.mkyong.common.action.JSONDataAction">
       	   <result type="json" />
      </action>
    </package>
 
</struts>
4. Demo

Access the action URL, the JSONDataAction’s properties will be converted into JSON format.
 http://localhost:8080/Struts2Example/getJSONResult.action

 

JSON format…


{
   "lists":["list1","list2","list3","list4","list5"],
   "maps":
   {
     "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1"
   },
   "number1":123456789,
   "numberarray1":[1,2,3,4,5,6,7,8,9],
   "string1":"A",
   "stringarray1":["A1","B1"]
}


所需jar包:
commons-beanutils-1.7.0.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.3.jar
freemarker-2.3.15.jar
json-lib-2.1.jar
ognl-2.7.3.jar
struts2-core