String string = request.getParameter(“data”)为null

时间:2013-10-17 16:08:02

标签: java ajax json servlets

我正在编写一个接受来自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的类型。我不知道为什么。

请帮帮我。

2 个答案:

答案 0 :(得分:5)

您正在向您的请求正文编写JSON并期望请求参数。来自javadoc

  

以String形式返回请求参数的值,如果是,则返回null   参数不存在。请求参数是额外信息   随请求发送。 对于HTTP servlet,参数包含在   查询字符串或发布的表单数据。

您尚未发布表单数据且没有查询字符串。

您想要的是使用HtppServletRequest#getInputStream()读取HTTP请求正文并解析JSON以提取您的元素。

答案 1 :(得分:2)

问题在于@Sotirios描述。但是,我会通过在服务器端使用Java REST框架来解决它,例如RESTEasySpring MVCRestlet。最好使用抽象,这样您就可以专注于业务逻辑而不是Servlet API的低级细节。

Jackson这样的JSON序列化器/反序列化器,以避免处理解析JSON的低级细节。杰克逊及其替代品与我提到的REST框架无缝集成。

我喜欢好的抽象。