2013-12-16 230 views
0

我在Tomcat 7服務器上執行以下Java Servlet代碼。它應該計算來自單個瀏覽器的請求。這必須使用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.看來,無論我有多少請求發送cookie的值始終爲0。我在做什麼錯後?

回答

3

嘗試將字符串比較是這樣的:

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

==測試對於相同字符串,最有可能你在處理兩個不同的字符串恰好有相同的內容比較。

之後,您會發現它可能仍然不起作用:無法保證cookie的順序,因此您可能希望查找獲得的最大值,而不是隻記住最後一個cookie值看到...

+0

我忘了字符串比較在Java中...現在它很好,謝謝! – Keammoort