【问题标题】:How to fetch jQuery JSON request parameters in servlet?如何在 servlet 中获取 jQuery JSON 请求参数?
【发布时间】:2011-11-02 02:37:15
【问题描述】:

我有以下 javascript 代码:

var data = {message:"Hi"}

var sendJson = function (){
    alert(data);
    $.ajax({
        url:"./jsonTest",
        data: data,
        contentType:"application/json",
        type:"post",
        dataType:"json"
    }).success(function(reply) {
        alert("successful");
    });
}

如何在我的 servlet 上获取 JSON 对象?

我之前尝试过使用它

request.getParameter("data")

并尝试将其转换为 JsonObject,但我不断收到 null

【问题讨论】:

    标签: java jquery json servlets


    【解决方案1】:

    @Kebs,

    如果这还没有弄清楚..你可以找到答案here:)

    【讨论】:

    • 非常感谢 :) 我会尽快尝试。 :)
    【解决方案2】:

    试试下面的行。 data 只是 javascript 变量,但 jquery 会将消息成员放在 URL 参数中而不是数据中。

    request.getParameter("message"); 
    

    【讨论】:

      【解决方案3】:

      如果data 是对象,它将被转换为请求参数字符串,如

      参数名称1=值1&参数名称2=值2

      你可以通过使用得到它

      request.getParameter("pameterName1");

      【讨论】:

      • 我试过了,但仍然为空。我需要在服务器端启用某些东西吗?
      • 您似乎使用了不合适的content-type 参数。我刚刚评论了contentType:"application/json" 并将参数传递给了servlet。我认为最好使用 $.get() 或 $.post() jQuery 函数
      【解决方案4】:

      您可能想查看建立在基本 Servlet API 之上的 JAX-RS 容器 (Jersey),但它可以更方便地获取 JSON 的数据绑定。

      但如果你必须使用原始的 Servlet API,那么 POST 内容将通过请求对象获得;获取 InputStream,并使用 Jackson 之类的 JSON 库绑定到对象:

      MyBean bean = new ObjectMapper().readValue(httpRequest.getInputStream(), MyBean.class);

      同样,如果您需要返回 JSON 对象,请执行相反的操作:

      objectMapper.writeValue(httpResponse.getOutputStream(), resultObject);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        • 2019-03-02
        • 2015-08-17
        • 1970-01-01
        • 2013-01-05
        • 2011-05-01
        • 1970-01-01
        相关资源
        最近更新 更多