2011-11-15 177 views
0

我正在發佈一個json請求到服務器。我可以看到http post是在firebug中正確完成的。 (我確定json格式是有效的)java如何從請求中獲取json?

例如。 {datas:[{「a」:1,「b」:2},{「a」:5,「b」:6}]}

我的問題是,如何在服務器中恢復此數據側?我讀過使用request.getInputStream的人,但不知道如何將其轉換爲字符串或用GSON解析。

另一個問題:是否有一個json字符串的大小限制我可以發佈?

(Struts的2)

dojo.xhrPost({ 
       url: "sub/sub/theAction", 
       postData: dojo.toJson(json), 
       handleAs:'json', 
       headers: { "Content-Type": "application/json; charset=utf-8"},   
       load: function(data) {  
        alert("done");   

         } 
       }      
      }); 

由於事先

+0

你如何發佈數據到服務器端? –

+0

嗨,我剛剛更新了問題,現在我怎麼發佈數據 – Kossel

+0

:你能展示你如何在配置文件中配置動作? –

回答

1

我不確定DOJO如何工作或發佈數據,但相信必須與其他JavaScript框架工作相同。 這裏是我們能做些什麼來達到你正在嘗試做

<package name="demojson" extends="struts-default,json-default"> 
    <action name="jsonTest" class="com.demo.action.JsonTestAction"> 
     <interceptor-ref name="json"> 
      <param name="contentType">application/json</param> 
     </interceptor-ref> 
     <result type="json"/> 
    </action> 
</package> 

public class JsonTestAction extends ActionSupport 
{ 
     private static final long serialVersionUID = 1L; 
     private Map data = new HashMap(); 
     // log decelaration   
     public Map getData() 
     { 
       return data; 
     } 

     public void setData(Map data) 
     { 
       this.data = data; 
     } 

     @Override 
     public String execute() 
     { 
       logger.log(Level.FINE, "action parameters: " + data); 

       return SUCCESS; 
     } 
} 


var submit = function() 
{ 
    var data = {data: {j1 : 'one', j2: 'two', j3: [1, 2, 3, 4, 5], j4: {a: 'A', b: 2, c: '3'}, j5: 2, j6: '2'}}; 
    jQuery.ajax(
    { 
     type: 'POST', 
     url: '/blah/jsonTest.action', 
     data: jQuery.toJSON(data), 
     dataType: 'json', 
     async: false , 
     contentType: 'application/json; charset=utf-8', 
     success: do what you want here} 
    }); 

如何JSON作品與Struts2的參考這個

JSON Plugin for Struts2 };

希望這會幫助你

+0

非常感謝,我得到了我的問題解決:D攔截器是我失蹤 – Kossel

+0

對不起,但現在當我調用jsonTest.action HttpServletRequest對象在那動作爲null:S,我實現了ServletRequestAware接口,其他方法在同一個動作中工作正常 – Kossel

+0

nvm,我用(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);相反,並感謝 – Kossel

0

使用與它的攔截器沿着JSON Plugin; Struts 2操作將使用請求數據填充。

請注意插件文檔頁面上JSON的需求。