Servlet, AJAX, Jsp -> как вернуть страницу JSP

384
16 августа 2017, 17:13

JS получает данные от API FB и отправляет их на сервлет посредством AJAX

 $.ajax({
            url: '/facebookSignin',
            type: 'POST',
            data: JSON.stringify(user),
            header: {
                "Content-type": "application/json"
            },
            success: function (data) {
                console.log(data);
            }
        });

Сервлет их получает, проверяет БД(MySQL с двумя таблицами "users" и "fbUsers") если нет в users то добавляем и если нет в фб то добавляет и записывает в сессию, возвращает "success" и должен вернуть страницу, чтоб перевести пользователя на страницу просмотра профиля(или другую)

Но этот сервлет

@WebServlet(
    name = "FacebookSignInServlet",
    description = "Вход и регистрация посредством facebook",
    urlPatterns = {"/facebookSignin"}
    )
   public class FacebookSignInServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) throws 
                      ServletException, IOException {
    SignInWithAnotherServiceModel sign = new 
    SignInWithAnotherServiceModel();
    Gson gson = new Gson();
    StringBuilder buff = new StringBuilder();
    String line;
    try (BufferedReader reader = request.getReader()){
        while ((line = reader.readLine()) != null) {
            buff.append(line);
        }
    } catch (Exception e) {
        /*report an error*/
        e.printStackTrace();
    }
    UserDataSet user = gson.fromJson(buff.toString(), 
    UserDataSet.class);
    String result = sign.doSignUpWithService(user);
    if (result.equals("OK")) {
        request.getSession().setAttribute("loggedUser", user);
        response.setContentType("text/html; charset=utf-8");
        response.setStatus(HttpServletResponse.SC_OK);
  request.getRequestDispatcher("/authorization.jsp").forward(request, response);
    } else {
        request.setAttribute("errorMessage", "Login or password is incorrect");
        request.getRequestDispatcher("/index.jsp").forward(request, response);
        response.setStatus(HttpServletResponse.SC_OK);
    }
    System.out.println(user.toString());
    }
}

Возвращает POST, судя по всему ответ AJAX'y и браузер читает его не совсем так как хочу я и не переводит на другую страницу, а также выдает HTTP 400

Если строка

request.getRequestDispatcher("/authorization.jsp").forward(request, response);

закоментирована то все ок

Как правильно при AJAX запросах возвращать JSP страницу ?

READ ALSO
Повторное использование потока

Повторное использование потока

Есть поток реализованный следующим образом, при создании потока isRun=true, при выполнении определённых действий он зацикливается на sleep(), до того...

254
Изменять начальный цвет

Изменять начальный цвет

Cтолкнулся с новой задачей:

219
Javah -stubs не генерирует ничего

Javah -stubs не генерирует ничего

Пробую JNI, наткнулся на такую статью: ссылка Там автор пишет такое:

247
Как выполнить код, если тест завалился?

Как выполнить код, если тест завалился?

Есть тестЦель теста: переводить страницу на другой язык(на странице снизу есть переключатель от гугл транслейта), и проверять как одно слово...

284