【问题标题】:Passing object array from jsp to java servlet using JSON使用 JSON 将对象数组从 jsp 传递到 java servlet
【发布时间】:2011-05-07 01:46:03
【问题描述】:

以下代码是我想要弄清楚的。希望你们能帮助我!

jsp:

<input name="test" type="text" /><br/>
<input name="test" type="text" /><br/>
<input name="test" type="text" /><br/>
<input id="query" type="button" value="query" onClick="doajax()"/>

js:

function doajax(){
    var dataSet = $("input[type='text'][name='test']").serializeArray();

    $.ajax({
            type: "post",
            url: "<%=request.getContextPath()%>/testJson",
            dataType: "json",
            data:dataSet,
            error:function(){   
                alert("error occured!!!");   
            },
            success:function(data){
                alert("success");
            }  
    });
}

* [更新] *

我正在使用 Struts 2.0。 我通常通过“get and set”而不是request.getParameters()来获取参数。

如何在 Java Servlet 中获取 dataSet

感谢您的阅读!

【问题讨论】:

    标签: jquery ajax json jsp servlets


    【解决方案1】:

    你可以试试这个例子来做对:-

    首先从jsp通过js文件中的getUserDetails()方法将名字和年龄传递给onclick事件

      function getUserDetails() {      
           var name = document.getElementById('name');      
           var age = document.getElementById('age');
    
           // alert("hi " + name.value);
       $.getJSON("../webresources/myresource",
               {
                        name: name.value,
                        age: age.value
                    },
                    function(json) {
    
                        alert("name is= "+json.name+ " and age is ="+json.age);
    
                    });
       }
    

    在 servlet 中应该如下所示:-

    public class MyResource {
    
      @GET
      @Produces("application/json; charset=UTF-8")
      public Response getIt(
            @QueryParam("name") String name,
            @QueryParam("age") String age) {
    
        Person person = new Person();
        person.setName(name);
        person.setAge(Integer.parseInt(age));
    
    //  Person persons = personService.findPerson(person);
        String temp1 = person.getName();
        int temp = person.getAge();
        String temp2 = Integer.toString(temp);
    
        StringBuffer buffer = new StringBuffer();
    
        buffer.append(" { 'name':'");
        buffer.append(temp1);
        buffer.append(" ','age': ");
        buffer.append(temp2);
        buffer.append(" } ");
        String json = buffer.toString();
    
            // for example constructed string looks like
          // String json = "{'name':'ravi','age':21}";
    
        return Response.ok(json, MediaType.APPLICATION_JSON).build();
    
    }
    

    【讨论】:

      【解决方案2】:

      dataSet 是一个常规的POST 参数,所以按常规方式获取。

      然后使用 Jacksongson 之类的 JSON 库将 JSON 转换为对象。但是,您需要将结构定义为一个类。所以,如果你有一个 DataSet 类精确映射到你发送的 json,你可以用 (Jackson) 填充它:

      ObjectMapper mapper = new ObjectMapper();
      DataSet object = mapper.readValue(dataSet, DataSet.class);
      

      然后,如果您想发送一些 JSON ase 响应,则转换响应数据并将其写入 response.getWriter(),或者如果库允许,则将输出直接写入编写器。

      例如,杰克逊有writeValue(writer, object)。所以在一个 servlet 中:

      ObjectMapper mapper = new ObjectMapper();
      mapper.writeValue(response.getWriter(), yourData);
      
      response.setContentType("application/json");
      

      【讨论】:

        【解决方案3】:

        使用 request.getParameterMap() 并显示所有请求参数。你可以在那里找到你想要的参数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多