我正在编写一个接受来自AJAX请求的POST数据的servlet。
以下是我从客户端发送的代码:
$.ajax({
type: "POST",
url: "urlservlet",
data: "{type:'" + "country" +
"', country:'" + $('#country').val() +
"'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
}
这是servlet代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
string test = request.getParameter("type");
}
但问题是我总是得到等于null的类型。我不知道为什么。
请帮帮我。
答案 0 :(得分:5)
您正在向您的请求正文编写JSON并期望请求参数。来自javadoc:
以String形式返回请求参数的值,如果是,则返回null 参数不存在。请求参数是额外信息 随请求发送。 对于HTTP servlet,参数包含在 查询字符串或发布的表单数据。
您尚未发布表单数据且没有查询字符串。
您想要的是使用HtppServletRequest#getInputStream()
读取HTTP请求正文并解析JSON以提取您的元素。
答案 1 :(得分:2)
问题在于@Sotirios描述。但是,我会通过在服务器端使用Java REST框架来解决它,例如RESTEasy,Spring MVC或Restlet。最好使用抽象,这样您就可以专注于业务逻辑而不是Servlet
API的低级细节。
和Jackson这样的JSON序列化器/反序列化器,以避免处理解析JSON的低级细节。杰克逊及其替代品与我提到的REST框架无缝集成。
我喜欢好的抽象。