Java Servlet не возвращает объект на угловые $ http.success Метод
-
21-12-2019 - |
Вопрос
Я изучаю Angular.js. Я пытался искать множество существующих вопросов, но не смог найти соответствующий вопрос или ответ.
Я посылаю запрос на сервлете Java и ожидаю от него объекта. Вот угловая $ 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);**
}
.
Когда ответ вернутся с этого сервлета, он идет к успеху $ http Service в угловой стороне. Откуда я получу объект пользователя, который я отправил с сервера.
Когда я добавляю console.log для печати данных, он печатает содержимое /html/index.html, где я пересылаю.
На основании моих исследований, мой угловой код правильный, но я не устанавливаю вещи правильно в Java Servlet. (Делает ли эту помощь - Как получить доступ к значениям возврата JSON в Angular.js Action Success Callback )
Спасибо заранее.
Решение
Вам нужно сериализовать свой пользовательский объект в строку JSON и поместите это в тело ответа.Библиотека, такая как Джексон, может помочь, но прежде чем добавить это и запутать себя, просто сериализуйте его в json String.Не забудьте установить заголовок типа содержимого.
Другие советы
-
Добавьте следующую строку на объект $ HTTP: Заголовки: {'Content-Type': «Приложение / X-www-urlencoded»}
-
Используйте метод пост вместо того, чтобы получить Метод: «Post»
Так в конце концов, мы придумали что-то подобное:
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");
});
.