2012-03-03 72 views
4

我對servlet比較陌生,目前我正在努力添加cookie。我相信這是我採用模塊化方法的一個結果,我構建了一個頭部實用程序類,它只是將所有頭信息插入到servlet中,所以我希望採用與添加Cookie相同的方法。創建Servlet Cookies

我也有一個信用驗證器類,除了用戶名和密碼,驗證它,然後返回一個有效/無效的響應。我相信這是問題所在。在將用戶名和密碼傳遞給憑證驗證程序的登錄表單中,我將表單操作指向憑證servlet和表單方法作爲帖子。

這樣做會提供一個問題,如果我想從窗體發送一個值到另一個servlet,或者它呢?

這個項目針對學校的目標是嚴格地用servlet創建一個簡單的網站,然後我們使用JSP來緩解這種痛苦。

我還有另外一種方法嗎?當使用表單動作和方法時,是否可以讓這些類在表單上執行各種功能?

謝謝你的幫助和指導。

最佳 Ë

回答

11

您可以將請求發送到servlet,然後在需要時將請求轉發到另一個servlet。

在您的情況下,驗證後,您可以將結果存儲在一個屬性中,然後將控制權轉移給另一個servlet。 (如果這就是你想要做的)

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/urlToServlet"); 
dispatcher.forward(request, response); 

這就是如何處理cookie。

創建和發送的cookie

Cookie userCookie = new Cookie("name", "value"); 
userCookie.setMaxAge(60*60*24*365); //Store cookie for 1 year 
response.addCookie(userCookie); 

您是否使用cookie進行會話跟蹤閱讀客戶端

String cookieName = "somecookie"; 
Cookie[] cookies = request.getCookies(); 
if (cookies != null) 
{ 
    for(int i=0; i<cookies.length; i++) 
    { 
     Cookie cookie = cookies[i]; 
     if (cookieName.equals(cookie.getName())) 
     { 
      doSomethingWith(cookie.getValue()); 
     } 
    } 
} 
else 
{ 
    //do something else for firsttime visitors 
} 

餅乾嗎? 如果是,則使用HttpSession。使用HttpSession,那麼不需要直接使用cookie來進行會話跟蹤。

例如,在一個簡單的登錄頁面,這是你做了什麼

HttpSession session = request.getSession(); 
session.setAttribute("username",username); 
In other pages, 
if(session.getAttribute("username")==null) 
{ 
//forward to login page. 
} 
+1

雖然很晚,但感謝您的回覆。這非常有幫助。 – 2012-05-20 20:28:20