Amazon Ads

2014年3月28日 星期五

【J筆記】使用Struts2回傳JSON字串

在很多時候,動態網頁需要回應JSON字串給客戶端程式如JavaScript來做後續的處理的。我這裡做一個以Struts2回應的範例,以供日後回顧參考。

這裡的範例是以「2.3.16.1」為主。

需要的jar檔如下:


先簡單看一下web.xml的配置:

 mystruts

 
  struts2
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 

 
  struts2
  /*
 

主要意思是,將所有的回應,轉給Struts來做處理。

再來看struts.xml的配置:
 

 
    
 
    
     
      
     
   
            /index.jsp
        
 
   
    /pages/HelloWorld.jsp
   
   
    
     jsonString
    
   
    
 

需要注意的是第9至11行這邊,需要替我要回傳的JSON格式定義一個result-type,在這裡就是json。

這裡使用Struts2定義的org.apache.struts2.json.JSONResult類別。

再來我只要再定義一個Action,它在execute方法處理好要轉成JSON字串的物件,並返回json_ok的結果就好,如上的第16至20行。

JsonAction.java的程式如下:
package org.apache.struts.helloworld.action;

import java.util.HashMap;
import java.util.Map;

import org.apache.struts.helloworld.model.JsonString;

import com.opensymphony.xwork2.ActionSupport;

public class JsonAction extends ActionSupport
{
 /**
  * 
  */
 private static final long serialVersionUID = 1645961153075600530L;

 private JsonString jsonString;
 
    public String execute() throws Exception {
         
        Map map = new HashMap();
        map.put("abc", "123");
        map.put("def", "456");
       
        this.getJsonString().setRes(map);
        return "json_ok";
    }

 public JsonString getJsonString()
 {
  if(jsonString == null)
  {
   this.jsonString = new JsonString();
  }
  return jsonString;
 }

 public void setJsonString(JsonString jsonString)
 {
  this.jsonString = jsonString;
 }
}

啟動伺服器後,送出要求後,就會得到下列的結果:


上列程式碼,可至這裡下載