【问题标题】:What should a servlet return that only is receiving data?只接收数据的 servlet 应该返回什么?
【发布时间】:2015-12-22 04:53:37
【问题描述】:

我实现了一个 servlet,它接收 JSON 字符串,将其转换为对象并将其数据插入数据库。我使用 AJAX 从 HTML 页面调用该 servlet 并将 JSON 字符串发布到它。就我而言,servlet 向响应中写入任何内容是否有意义?

【问题讨论】:

  • 为您的工作返回成功或失败的字眼

标签: java ajax jsp servlets


【解决方案1】:

由于您提到您对 servlet 进行了 ajax 调用,您可能应该将 JSON 状态返回给调用 .ajax()

response.setContentType("application/json");
// Get the printwriter object from response to write the required json object    to     the output stream      
PrintWriter out = response.getWriter();
// Assuming your database operation insert is successful
JSONObject json = new JSONObject();

// put a success message into the JSON object .
json.put("status", "success");

out.print(jsonObject);
out.flush();

在客户端

success: function(data) {
if(data.status == 'success'){
    alert("Thank you for subscribing!");
}else if(data.status == 'error'){
    alert("Error on query!");
}
}

【讨论】:

    【解决方案2】:

    您无需返回任何东西。请求周期完成后,您的浏览器会以流的形式接收它的响应对象。如果你想给它加点东西。

    response.getWriter().write(somedata);
    

    您将在 AJAX 回调中收到 somedata

    详细示例代码:How to use Servlets and Ajax?

    【讨论】:

    • 但是建议不向调用者返回任何内容吗?
    • 如果您不想要客户端的任何内容,则无需返回任何内容。如果您想确认返回您的数据。例如:10,true,false 等,甚至是 json 格式的对象列表。
    【解决方案3】:

    最好在 try catch 块内执行数据库事务,并向客户端返回成功/失败状态标志,以防事务因任何原因失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-04
      • 2019-07-08
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多