#java #angularjs #servlets
#java #angularjs #сервлеты
Вопрос:
Я пытаюсь извлечь данные из сервлета и вызвать такой сервлет из контроллера angular. Однако контроллер, похоже, не достигает сервлета.
Я установил пару сообщений об ошибках (вместо отладки) и вижу, что функция выполнена, но сервлет не достигнут (всегда появляется сообщение «не удалось найти»).
Возможно ли, что используемый им путь неверен? Я тестировал с / в начале, а также используя полный путь (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);
})
Сервлет
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);
}
}
Моя цель — получить данные из сервлета, чтобы я мог легко отобразить их на своей домашней странице.
Обновить:
Из браузера я могу получить доступ к другим сервлетам (Login, process) через имя «mapping» (@WebServlet (значение =»/ login»), но не к этому. Я также создал это с другим именем и не работает. Я не могу найти различий между теми, которые работают, и теми, которые этого не делают.
Комментарии:
1. Проблема возникает только при переходе по URL-адресу из вашего js, или вы даже не можете получить его через обычный браузер?
2. вы имеете в виду, если я перейду через brouser к localhost / project / servlet? он не находит сервлет. Я попробовал с другим сервлетом, который я использую с помощью POST с кнопки отправки формы, и ошибка отличается (GET не поддерживается), что имеет смысл (этот сервлет отлично работает в приложении)
Ответ №1:
Нашел проблему (на самом деле это приснилось).
Сервлеты, которые «работают», были созданы под управлением tomcat 8.0 на моем школьном компьютере. Дома я использовал tomcat 8.5, но поскольку я не удалял зависимость от tomcat 8.0, он вообще не строился (eclipse не показал мне ошибки idk почему). Таким образом, технически сервлеты никогда не создавались.