我有React JS应用程序,我发送邮件请求到服务器,并使用axios库提交表单。
客户请求:
sendData(data,price) {
axios.post('http://localhost:8080/SampleJavaAPP/UserServer', {
item: data,//these value
price:price//these value
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
我不知道如何将这些值输入服务器我正在服务器中为此获取价值
String name = request.getParameter("item");
String price = request.getParameter("price");
System.out.println("Result "+name + price);
但是它在服务器中给出了null值。如何在服务器中接收这些值参数?
答案 0 :(得分:1)
request.getParameter()未检索到Request Body。您需要通过request.getReader()检索它。
String body = IOUtils.toString(request.getReader());
建议先使用 Apache Commons IO 来获取内容。因为您的请求是JSON格式。您可以使用 Jackson 将字符串转换为地图。
Map<String, String> map = mapper.readValue(body, new TypeReference<Map<String, String>>(){});
System.out.println(map.get("item"));
System.out.println(map.get("price"));
答案 1 :(得分:0)
request.getParameter()
指的是网址参数 - &gt; myurl?someparameter=1
通过执行request.getParameter("item")
,您的网址需要看起来像http://localhost:8080/SampleJavaAPP/UserServer?item=myitem
你在这里做的是什么
sendData(data,price) {
axios.post('http://localhost:8080/SampleJavaAPP/UserServer', {
item: data,//these value
price:price//these value
}
将对象添加到请求正文,这是恕我直言。因为您在服务器端请求对象上找不到任何参数item
或price
。
您需要做的是解析请求正文。使用request.getInputStream()
,您可以获得Inputstream
。我建议你使用一个对象映射器,这使得它非常简单。见Intro to the Jackson ObjectMapper
在你的servlet中,你做这样的事情:
ObjectMapper objectMapper = new ObjectMapper();
MyItem myItem = objectMapper.readValue(request.getInputStream(), MyItem.class);
public class MyItem{
String price;
String item;
public void setItem(String item) {
this.item = item;
}
public void setPrice(String price) {
this.price = price;
}
public String getItem() {
return item;
}
public String getPrice() {
return price;
}
}
答案 2 :(得分:0)
由于Axios发送Json数据,您将无法直接阅读。 有两种可能的解决方案:
将数据作为表单数据发送。
阅读&amp;在servlet上解析JSON:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null) {
jb.append(line);
}
} catch (Exception e) { /*report an error*/ }
try {
JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
String price = jsonObject.get("price"); // will return price value.
} catch (JSONException e) {
throw new IOException("Error parsing JSON request string");
}
}