【问题标题】:Return JSONObject from servlet throws exception从 servlet 返回 JSONObject 抛出异常
【发布时间】:2012-11-18 14:40:10
【问题描述】:

我有一个 servlet,我从 ajax(jquery) 调用中发布数据。

$('form').submit(function() {
var URL = "ProjectHandler"; 
var dataString=$(this).serialize();
$.ajax({
       type: "POST",
       url: URL,
       data: dataString, 
      // dataType: json,
       success: function(data)
       {
           alert(data.error);

       }
     });
    return false; 
});

我注释了 dataType 因为当我取消注释时,它不会进行 ajax 调用,而是以默认模式提交表单,即加载 servlet

我已添加到项目中的 JAR 1. json-lib-2.2.2-jdk15.jar 2. apache-commons-lang.jar 3. ezmorph-1.0.jar

首先它抛出异常 filenotfound,它是 apache-commons 包的一部分,因此包含了 apache commons,之后我得到了 filenotfound 异常,它是 ezmorph-1.0.jar 的一部分,所以我也添加了它。现在我得到了

java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory

servlet doPost 中的代码:

response.setContentType("application/json");
PrintWriter out = response.getWriter();

JSONObject json  = new JSONObject();
json.put("error", true);
json.put("errorDesc", "wrong title");
out.print(json);

我希望我已经清除了场景,任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 谷歌搜索异常会有所帮助

标签: java javascript json jquery servlets


【解决方案1】:

您似乎缺少 commons-logging.jar。将其添加到您的类路径中。

【讨论】:

  • 现在这个异常 java.lang.ClassNotFoundException: org.apache.commons.collections.map.ListOrderedMap
  • 等等,现在我已经添加了包含所有公共包的整个 apache-commons.jar,现在我得到了这个异常 java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
  • 老兄,每次遇到这样的错误,只要找到包含该类的jar并将其添加到类路径中
  • 哦,我觉得这将是一个永无止境的罐子添加,因为添加一个会产生其他异常
  • 看,添加新的 java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
【解决方案2】:

你能删除 json-lib 吗?如果是的话就去做!老实说,没有理由使用这个库......它需要您添加大量依赖项的事实证明了这一点。

我建议你试试 Genson 库 http://code.google.com/p/genson/。它的优点是易于使用,但功能强大,可扩展,多合一且速度快。 它可以让你直接反序列化/序列化到 pojos,不需要使用所有那些 JsonObject/Arrays...如果你需要在性能方面接近手动 json 的东西,你也可以直接使用它的流 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2015-03-28
    • 2012-04-23
    • 2014-12-03
    相关资源
    最近更新 更多