2013-12-16 5 views
0

У меня есть следующий код сервлета Java, выполняющийся на сервере Tomcat 7. Предполагается, что он запрашивает запросы из одного браузера. Это должно быть сделано с использованием файлов cookie вместо использования SessionAttributes. Код:Почему мое значение cookie не установлено?

@WebServlet("/") 
public class CookieTestServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     Cookie[] cookies = req.getCookies(); 
     int count = 0; 

     if (cookies != null) { 
      for (Cookie c : cookies) { 
       if (c.getName() == "count") { 
        count = Integer.parseInt(c.getValue()); 
       } 
      } 
     } 
     ++count; 
     resp.addCookie(new Cookie("count", "" + count)); 
     System.out.println(count); 
    } 
} 

После запуска этого несколько раз (освежающий браузер) Tomcat консоли всегда выводит 1. Кажется, что независимо от того, сколько запросов я посылаю, значение куки всегда равен 0. Что я делаю не так?

ответ

3

Попробуйте сравнить строки так:

if(c.getName().equals("count")) 

Сравнение с == тестов для идентичных строк и, скорее всего, вы имеете дело с двумя различными строками, которые просто случаются иметь то же самое содержание.

После этого вы узнаете, что он все еще не работает: нет гарантии для порядка куки-файлов, поэтому вы можете захотеть найти наибольшее значение, которое вы получаете, вместо того, чтобы просто помнить последнее значение cookie, которое вы saw ...

+0

Я забыл о сравнении строк в Java ... Теперь он отлично работает, спасибо! – Keammoort

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