无法与servlet连接

时间:2016-04-28 15:53:54

标签: java angularjs servlets java-ee

我在Angular中收到了以下ajax请愿书:

$scope.texto = "";
$scope.cargarDesdeBackend = function(){
    var nombre = "{'nombre':'Benito'}";
            $http({
      method: 'POST',
      url: 'http://localhost:8080/Datos',
      headers: {'Content-Type': 'application/json'},
      data:  nombre
    }).success(function (data) 
      {
        $scope.texto = data;
      });
  };

请注意,“var nombre”行仅用于测试目的!

我从一个按钮发送此请愿书,然后转到以下servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        StringBuffer sb = new StringBuffer();

    try 
    {
      BufferedReader reader = request.getReader();
      String line = null;
      while ((line = reader.readLine()) != null)
      {
        sb.append(line);
      }
    } catch (Exception e) { e.printStackTrace(); }

    JSONParser parser = new JSONParser();
    JSONObject joUser = null;
    try
    {
      joUser = (JSONObject) parser.parse(sb.toString());
    } catch (ParseException e) { e.printStackTrace(); }

    String user = (String) joUser.get("nombre");

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.write("A new user " + user + " has been created.");
    out.flush();
    out.close();
    }

这将检索以下内容:

enter image description here

在控制台中,我收到此错误:

enter image description here

我做错了什么?

编辑:我已将此servlet映射到web.xml文件中的“/ Datos”。

1 个答案:

答案 0 :(得分:2)

您发送的内容不是有效的JSON。使用

var nombre = {nombre: 'Benito'}; 

让角度将此对象编组为JSON。

同样删除无用的标题,因为Angular也会自行添加它。

请注意,不是逐行将字体读入字符串然后解析字符串,而应将读者直接传递给JSON解析器。

最后,对于您和我们来说,通过读取异常的堆栈跟踪找出问题会更容易,而不是试图猜测这个500错误的原因是什么。