以下代码是我想弄清楚的。希望你们能帮助我!
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
?
感谢您阅读!
答案 0 :(得分:2)
你可以尝试这个例子来做对: -
首先通过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();
}
答案 1 :(得分:1)
dataSet
是一个常规的POST
参数,因此请以常规方式获取。
然后使用像Jackson或gson这样的JSON库将JSON转换为对象。但是,您需要将结构定义为类。所以,如果你有一个DataSet
类完全映射到你发送的json,你可以填充它(杰克逊):
ObjectMapper mapper = new ObjectMapper();
DataSet object = mapper.readValue(dataSet, DataSet.class);
然后,如果要发送一些JSON响应,请转换响应数据并将其写入response.getWriter()
,或者如果库允许,则将输出直接写入writer。
writeValue(writer, object)
。所以在servlet中:
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getWriter(), yourData);
response.setContentType("application/json");
答案 2 :(得分:0)
使用request.getParameterMap()并显示所有请求参数。您可以在那里找到所需的参数。