Передача массива объектов из jsp в java-сервлет с использованием JSON - PullRequest
2 голосов
/ 09 ноября 2010

следующие коды - это то, что я пытаюсь выяснить. Надеюсь, вы, ребята, можете мне помочь!

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().

Как я могу получить dataSet в сервлете Java?

Спасибо за чтение!

Ответы [ 3 ]

2 голосов
/ 03 января 2012

Вы можете попробовать этот пример для правильного понимания: -

имя и возраст первого события для события onclick с помощью метода getUserDetails () в файле js из jsp, а затем

  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);

                });
   }

и в сервлете это должно быть так: -

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();

}
1 голос
/ 09 ноября 2010

dataSet - это обычный POST параметр, поэтому получите его обычным способом.

Затем используйте библиотеку JSON, такую ​​как Джексон или gson , чтобы преобразовать JSON в объект. Однако вам нужно определить структуру как класс. Так что, если у вас есть класс DataSet, который точно соответствует отправленному вами json, вы можете заполнить его (Джексон):

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

Затем, если вы хотите отправить какой-либо ответ JSON ase, либо преобразуйте данные ответа и запишите их в response.getWriter(), либо, если библиотека позволяет это, запишите выходные данные непосредственно в модуль записи.

Например, у Джексона writeValue(writer, object). Итак, в сервлете:

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

response.setContentType("application/json");
0 голосов
/ 09 ноября 2010

Используйте request.getParameterMap () и отобразите все параметры запроса.Вы можете найти желаемый параметр там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...