2015-02-09 7 views
0

Я пытаюсь создать html-страницу, когда при вводе ее она перенаправит меня на другую страницу, в зависимости от атрибута в сеансе.javascript - Обработка перенаправления из ответа HTTP

Если в сеансе есть атрибут с именем «имя пользователя», он не перенаправляет меня, и в противном случае он будет.

Для этого я написал функцию javascript, которая вызывает сервлет Java, который проверяет, существует или нет атрибут.

<script type="text/javascript"> 
    var req = new XMLHttpRequest(); 
    req.onreadystatechange = function() { 
     if (req.readyState == 4) { 
      var data = req.responseText; 
     } 
     document.write(req.readyState); 
    } 
    req.open('POST','sessionCheck',true); 
    req.send(null); 
</script> 

Код в сервлета:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    HttpSession hs = request.getSession(); 
    String username = (String) hs.getAttribute("username"); 
    if (username == null) 
      response.sendRedirect("/login.html"); 

} 

Я знаю, что resonse выслал редирект, но страницы не был перенаправлен.

* Примечание. Я использую Eclipse Java EE для веб-разработчиков.

Спасибо!

+0

Вы должны проверить ответ и затем принять решение о перенаправлении или нет. Перенаправление будет выполнено с использованием Javascript не сервером Servelet – Hunsu

ответ

1

Javascript AJAX просит следовать за переадресацией. Вероятно, ваш код javascript завершил запрос страницы, на которую вы хотели перенаправить браузер.

Попробуйте вернуть страницу, чтобы перенаправить на ваш ответ, а затем заставить браузер перейти на эту страницу.

Вы можете видеть, что XMLHttpRequest standard утверждает, что перенаправляет будут следовать:

HEADERS_RECEIVED (числовое значение 2)

Все переадресовывает (если таковые имеются) были соблюдены и все HTTP-заголовки окончательного ответа были получены. Теперь доступно несколько элементов ответа объекта.

+0

Спасибо, но в итоге я сделал что-то еще: я использовал response.senderror (401) и объявил страницу «login.html» обработчиком этой ошибки. – Yuval

+0

Использование кода состояния для обозначения проблемы является идеальным решением. –

Смежные вопросы