2012-07-12 75 views
0

我是一個Web應用程序的初學者。我在glassfish服務器上使用java EE創建了一個動態Web項目。現在我想讓客戶端使用json將數據發送到服務器,並使用json或xml從服務器接收數據。通過在線搜索,我現在清楚如何在服務器端進行編程。現在我使用ajax發送json數據。但是,也許這是很容易在服務器上編碼,我找不到任何與服務器相關的代碼。我的服務器端應該使用JSP讀取json數據,使用bean(已完成)生成一些數據並將數據發回。這裏是代碼,我不知道問題在哪裏。任何人都可以給我任何建議嗎?你的幫助對我來說意義重大!如何將JSON數據發送到服務器並使用JSP獲取JSON/XML作爲響應

這是客戶端的ajax代碼。我派了兩個輸入數量從形式

$(function() { 
    $("#myform").submit(function() { 
     var lat = $("#num1").val(); 
     var lon = $("#num2").val(); 
     alert("form"); 

     if (num1 == '' || num2 == '') { 
      $('.success').fadeOut(200).hide(); 
      $('.error').fadeOut(200).show(); 
     } else { 
      $.ajax({ 
       type : "POST", 
       url : "marker.jsp", 
       contenttype : 'application/json; charset=utf-8', 
       data : { 
        "num1" : "wtf", 
        "num2" : $("#num2").val(), 
       }, 

       success : function(msg) { 
        $('.success').fadeIn(200).show(); 
        $('.error').fadeOut(200).hide(); 
        alert(msg); 

       } 
      }); 
     } 

     return false; 
    }); 
}); 

但之後,我切換到jsp頁面,我只發現了兩個空值顯示,這裏的服務器上的代碼,我計劃在開始發送XML和我不確定request.getParameter是否可以工作,以及如何發回這些xml數據或使用json格式發回數據。幫幫我!

<?xml version="1.0" encoding="UTF-8"?> 
<%@ page contentType="text/xml" %> 
<%@ page    import="javax.naming.InitialContext,net.roseindia.ejb3.stateless.*,javax.ejb.EJB,java.util.*"%> 

<% 
     try { 

      String s1 = request.getParameter("num1"); 
      String s2 = request.getParameter("num2"); 
    %> 
      <%=s1%> 
      <%=s1%> 

    <% 
      if (s1 != null && s2 != null) { 
       List<String> textdatas = cal.GetTextResults(s1, s2); 

       for (String textdata : textdatas) { 

       String textLocation= "("+textdata.split("\\t",2)[0]+")"; 
       System.out.println(textLocation); 
    %> 
    <text> 
     <location><%=textLocation%></location> 
     <event> <%=textdata.split("\\t",2)[1]%></event> 
    </text> 
    <% 
       } 

       List<String> images = cal.getImage(); 

       for(String image: images){ 
       System.out.println(image); 
    %>   
    <image> 
     <imglocation><%=image.split("\\t",2)[0]%></imglocation>> 
     <path><%=image.split("\\t",2)[0]%></path> 
    </image> 



    <%   
      } 
      } 
     }// end of try 
     catch (Exception e) { 
      e.printStackTrace(); 
      //result = "Not valid"; 
     } 
    %> 

回答

0

如果你沒有使用任何MVC框架,我建議你採用一個。從JSP中渲染XML/JSON似乎不是一種好的/簡單的做法。它不難看出你的代碼變得太麻煩了......並不是說它可能不是有效的代碼。

我建議你採用MVC框架 - 我使用VRaptor這是一個相當不錯的,簡單的一個,讓你開發RESTful Web應用程序,甚至沒有意識到這一點。請務必檢查這one minute guide !!!這個封裝了ThoughWorks XStream Framework的框架使得它簡單地完成你的任務。看看就需要對請求與JSON對象迴應什麼:

import static br.com.caelum.vraptor.view.Results.*; 

    @Resource 
    public class ClientsController { 

    private final Result result; 
    private final ClientDao dao; 

    //result and dao parameters gets inject by VRaptor that 
    //by its turn lets you chose which Dependency Injection framework 
    //you wouldd like to be using with - pretty much as a plugin 
    public ClientsController(Result result, ClientDao dao) { 
     this.result = result; 
     this.dao = dao; 
    } 

    @Get("/client/json") 
    public void loadJson(MyParam param) { 
     result.use(json()).from(dao.getClient(param.id)).serialize(); 
    } 

    @Get("/client/xml") 
    public void loadXml(MyParam param) { 
     result.use(xml()).from(dao.getClient(param.id)).serialize(); 
    } 
} 

注意Vraptor從反序列化JSON對象MyParam並且還注入到控制器的動作請求到達!

本例取自this page

+0

謝謝。但遺憾的是,我忘了提及我使用j2ee和glassfish服務器 – 2012-07-12 06:14:05

+0

它不是問題,您也可以通過此配置運行mvc框架! :) – renatoargh 2012-07-12 06:39:48

相關問題