2010-11-09 102 views
2

下面的代碼就是我想弄明白的。希望你們能幫助我!使用JSON將jsp中的對象數組傳遞給java servlet

的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

謝謝您的閱讀!

回答

1

dataSet是一個常規的POST參數,所以要定期進行。

然後使用類似Jacksongson的JSON庫將JSON轉換爲對象。但是,您需要將結構定義爲一個類。所以,如果你有一個DataSet類恰好映射到您發送的JSON,您可以用(傑克遜)填充:

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

然後,如果你想發送一些JSON酶反應,要麼轉換的響應數據和將它寫入response.getWriter(),或者如果庫允許,將輸出直接寫入寫入器。

傑克遜例如有writeValue(writer, object)。因此,在一個servlet:

ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(response.getWriter(), yourData); 

response.setContentType("application/json"); 
+0

你好,tahnku幫助。但是我更新我的問題! – EM8H 2010-11-09 07:28:00

+0

@ EM8H看到更新 – Bozho 2010-11-09 07:40:12

+0

它的工作!非常感謝你! – EM8H 2010-11-09 09:27:16

0

使用request.getParameterMap()並顯示所有的請求參數。你可以在那裏找到你想要的參數。

2

你可以試試這個例子得到它的權利: -

首次通過getUserDetails在js文件從JSP名稱和年齡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(); 

}