ответ с помощью addCookie () и отправки Redirect () - PullRequest
1 голос
/ 23 марта 2012

Я использовал следующий код, чтобы установить cookie, а затем перенаправить.

String level=(String) request.getAttribute("level");

 if(level!=null)
 {
  Cookie cookie=new Cookie("level",level);
  cookie.setMaxAge(-1);
  cookie.setPath("http://localhost:8080/saml");

  response.addCookie(cookie);

  response.sendRedirect("http://​localhost:8080/saml/someservices.jsp");
 }


Этот код работает нормально. Но я хочу знать, как? Потому что, когда механизм jsp анализирует код jsp, он сначала встретит addCookie и перенаправление send. Добавляет ли он cookie, как только строка response.addCookie(cookie);? Что если я переверну его, то есть сначала sendRedirect(), а затем addCookie()? Как движок jsp видит это?

Ответы [ 2 ]

6 голосов
/ 23 марта 2012

Cookies добавляются в HTTP-заголовки ответа . Перенаправление также указывается в заголовках. Оба отправляются обратно клиенту при отправке перенаправления.

Если вы измените порядок addCookie и sendRedirect, он может по-прежнему работать, в зависимости от точной последовательности событий в базовом контейнере сервлета. Я бы не рекомендовал это.

0 голосов
/ 11 января 2013

Я был бы удивлен, если код работает, потому что метод sendRedirect() создает новый запрос, и в этом процессе все в предыдущем ответе сбрасывается, означая, что все куки будут потеряны. Новый ресурс http://​localhost:8080/saml/someservices.jsp и связанный с ним сервлет (если он есть) не смогут получить файл cookie с именем «level».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...