Я пытаюсь использовать сервлет входа в систему для проверки информации для входа в мое угловое веб-приложение.Однако, когда я делаю почтовый запрос, я получаю внутреннюю ошибку сервера 500.
Вот мой doPost в моем логине сервлета:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ERS_Users user = new ObjectMapper().readValue(req.getInputStream(), ERS_Users.class);
System.out.println(user);
if(user == null) {
System.out.println("inside the first if");
resp.setStatus(400);
resp.getWriter().write("No data submitted");
return;
} else {
// authenticate user with database
System.out.println("Inside the first else");
user = launcher.authUser(user);
if(user != null) {
// everything is good send auth data
System.out.println("inside the second if");
resp.setStatus(200);
resp.getWriter().write(new ObjectMapper().writeValueAsString(user));
return;
}
}
resp.setStatus(401);
resp.getWriter().write("Email or password was incorrect");
}
Я использовал system.out.println
, чтобы попытаться найти проблему,Когда угловое приложение отправляет электронное письмо и пароль этому сервлету, «внутри первого» печатается до достижения метода authUser.
Вот метод authUser:
public ERS_Users authUser(ERS_Users authUser) {
ERS_Users u = getUserbyUsername(authUser.getEmail());
if (u!= null ) {
if (u.getPassword().equals(authUser.getPassword())) {
u.setPassword("");
}else {
u = null;
}
}
return u;
}
public ERS_Users getUserbyUsername(String authUser) {
System.out.println("inside getuserbyusername");
Session session = sessionFactory.openSession();
System.out.println("inside getuserbyusername2");
Transaction tx = session.beginTransaction();
List<ERS_Users> u = null;
String hql = "From Users where ERS_EMAIL =: username";
NativeQuery q = session.createNativeQuery(hql);
q.setParameter("username", authUser);
u=q.getResultList();
ERS_Users users= null;
if(!u.isEmpty()){
// ignores multiple results
users= u.get(0);
}
session.close();
return users;
}
"внутриgetuserbyusername "- это последнее, что печатается перед тем, как возникает ошибка при открытии сеанса:
Session session = sessionFactory.openSession();
Самый близкий ответ, который я видел, был Ошибка 500 из-за сеанса
Однако я ясно создал сессию.