Java Servlet没有将对象返回到Angular $ http.success方法

时间:2014-02-26 12:01:28

标签: angularjs servlets angularjs-http

我正在学习Angular.js。我试图搜索许多现有问题,但找不到一个匹配的问题或答案。

我正在向一个java servlet发送一个GET请求,并期待它的一个对象。这是角度$ http GET请求

        $http({
            method:'GET',
            url : '/JSONWebApp/json/?fqn=' + $scope.fqn
        }).
            success(function(data, status, header, config){
                console.log('Success');
                console.log("data - "+data);
                console.log("status - " + status);
                console.log("header - " + header);
                console.log("config - " + config);
            }).
            error(function(data, status, header, config){
                console.log('Error');
            });

在java servlet上,这是我在doGet方法中编写的内容

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       System.out.println("Incoming Request URI : " + request.getRequestURI());

   **User user = new User();
         request.setAttribute("user", user);
   RequestDispatcher view = request.getRequestDispatcher("/html/index.html");
   view.forward(request, response);**
}

当从这个servlet返回响应时,它会在角度方面成功获得$ http服务。从那里我将获得我从服务器发送的用户对象。

当我添加console.log来打印数据时,会打印我正在转发的/html/index.html内容。

根据我的研究,我的角度代码是正确的,但我没有在java servlet中正确设置。(这有用吗 - How to access json return values in angular.js action success callback

提前致谢。

2 个答案:

答案 0 :(得分:4)

  1. 将以下行添加到$ http对象:  标题:{'Content-Type':'application / x-www-form-urlencoded'}

  2. 使用POST方法代替GET 方法:'POST'

  3. 所以最后,我们想出了类似的东西:

    myData = {"name": "zezinho", "pass": "123xxx"};
    
    $http({
      method: 'POST',
      url: 'Login',
      data: myData,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function (data) {
      alert(data);
    }).error(function () {
      alert("login error");
    });
    

答案 1 :(得分:0)

您需要将User对象序列化为JSON字符串并将其放入响应正文中。像杰克逊这样的图书馆可以提供帮助,但是在你添加它之前并且让自己感到困惑更多只是自己将它序列化为一个JSON字符串。不要忘记设置Content-Type标头。