如何从Angular与Servlet正确通信

时间:2019-04-17 20:21:20

标签: java angularjs servlets

我正在尝试从servlet中获取数据,并从有角度的Controller中调用此类servlet。但是,控制器似乎没有到达servlet。

我设置了一些错误消息(而不是调试),并且看到该函数已执行,但是未到达servlet(总是收到“无法找到”消息)。

使用im的路径是否可能不正确?我一开始使用/进行了测试,还使用了完整路径(localhost / project / servlet)。

神经控制器


app.controller("userController", function($scope, $http){

    $scope.error = "NOT EXECUTED";
    var onSuccess = function(response){
        $scope.users = response.data;
        $scope.error = "EXECUTED BUT NOT PROPERLY";
    };
    var onError = function(response){
        $scope.error = "unable to find the record";
    }
    var con = $http.get("UserListServlet");
    con.then(onSuccess, onError);

})

Servlet

package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;

import com.google.gson.Gson;

import elementos.Usuario;


@WebServlet(value="/UserListServlet")
public class UserListServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    public UserListServlet() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        Database db = Database.getInstance();
        ArrayList<Usuario> usersList = db.getUsuarios();

        JSONArray arrayObj = new JSONArray(usersList);
        String jObj = new Gson().toJson(arrayObj);

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(jObj);


    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

我的目标是从servlet中获取数据,以便我可以轻松地将其显示在主页上。

更新:

在浏览器中,我可以通过“映射”名称(@WebServlet(value =“ / login”)访问其他servlet(登录,进程),但不能使用此名称。我还使用其他名称创建了该servlet,但它不起作用。我找不到有效的方法和无效的方法之间的区别。

1 个答案:

答案 0 :(得分:0)

发现了问题(实际上是在做梦)。

在我的学校PC上运行tomcat 8.0创建了“工作”的servlet。在家里,我使用的是tomcat 8.5,但是由于我没有删除tomcat 8.0上的依赖项,因此它根本没有构建(eclipse并没有向我显示错误idk原因)。因此,从技术上讲,从未构建过servlet。