Struts 2とJSONの例
Struts 2の例では、 “struts2-json-plugin.jar”ライブラリを使用してオブジェクトをJSON形式に変換する方法を学習します。
1.依存関係ライブラリを取得する
<!-- 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.アクション(JSON)
これはJSON形式に変換されるActionクラスです。
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
JSONデータを出力するには、 ”
json-default
“と結果の型を ”
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.デモ
アクションURLにアクセスすると、
JSONDataActionのプロパティ
がJSON形式に変換されます。
http://localhost:8080/Struts2Example/getJSONResult.action

JSON形式…
{
"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"]}
JSONプラグインがStruts 2とどのように連携していたのかを知ることができればと思っています。しかし、まだ多くの便利な設定がありますので、http://struts.apache.org/2.1を必ず読んでください。 8.1/docs/json-plugin.html[Struts 2 JSON plugin]ドキュメントを参照してください。
ソースコードをダウンロードする
ダウンロード – リンク://wp-content/uploads/2010/07/Struts2-JSON-Example.zip[Struts2-JSON-Example.zip]