2010-04-06 44 views
5

我有一個簡單的jsp/servlet應用程序,我想爲此應用程序添加AJAX功能。我使用JQuery,但使用什麼javascript框架並不重要。這是我的代碼:將數據從servlet傳遞到Ajax應用程序中的JavaScript代碼?

<script type="text/javascript"> 

     function callbackFunction(data){ 
      $('#content').html(data); 
     } 
     $('document').ready(function(){ 

      $('#x').click(function() { 
       $.post('/ajax_2/servlet',callbackFunction) 

      }); 
     }); 
    </script> 
    <body> 
     <a href="#" id="x">Increase it</a> 
     <div id="content"></div> 

    </body> 
</html> 

的Servlet

HttpSession session = request.getSession(); 
    Integer myInteger = (Integer)session.getAttribute("myInteger"); 
    if(myInteger == null) 
     myInteger = new Integer(0); 
    else 
     myInteger = new Integer(myInteger+1); 
    session.setAttribute("myInteger", myInteger); 
    response.getWriter().println(myInteger); 

問題:

我用的out.print將數據從一個servlet轉移到JavaScript代碼(Ajax代碼)但如果我有一個複雜的結構,如對象矢量或類似的東西,傳輸數據的最佳方式是什麼?那麼XML文件,JSON?是否有任何特殊 jsp/servlets庫將數據從servlet傳輸到ajax應用程序?如何解析回調函數中的這些數據?

回答

5

最好的方法是使用JSON。有幾個Java庫可將完全適用的Java對象轉換爲JSON字符串,反之亦然。進一步的JSON可以以完全自然的方式在Javascript中訪問,而無需將數據轉換/按摩到另一種格式。

至於服務器端部分,我強烈建議挑選Google Gson作爲JSON序列化程序。 Gson是首選,因爲它支持將複雜的JavaBeans和數組,集合以及它們的映射轉換爲JSON,反之亦然,而不用擔心在單行代碼中出現問題。它甚至支持泛型。基本上所有你需要做的是以下幾點:

檢查user guide更多地瞭解GSON的權力。

所有的一切,在服務器端以下就足夠了:

public static void writeJson(HttpServletResponse response, Object object) throws IOException { 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(new Gson().toJson(object)); 
} 
相關問題