2012-07-12 40 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

相关问题