2011-10-06 70 views
4

我很難概念化Tomcat如何在後臺處理cookie和會話管理。使用Tomcat和cookies進行會話管理

Tomcat何時或在哪裏發佈cookie來管理HttpSession?根據This question/answer,會話從初始呼叫到getSession()創建。

如果我正在運行Filter並致電getSession(),是否會自動將必要的cookie(假設我已配置web.xml以使用cookie)附加到ServletResponse?如果不是,我該怎麼做?我沒有運行任何jsp的。

回答

5

Java Servlets管理cookie和狀態透明地爲你服務。 Tomcat是Java Servlets運行的Web服務器。

網絡服務器管理cookies的方式是直接將它們發送到HTTP請求中,我並不是100%確定協議文本,但我相信只是Tomcat會發送「SET COOKIE:...」在發送到瀏覽器的實際HTTP中。

這裏要注意的重要一點是,Tomcat和java Servlet規範是耦合的 - Tomcat託管Servlet,並提供包含HTTP通信基本方面的接口實現:例如,這裏是它的Cookie接口---- http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/Cookie.html

一般來說,編寫Web應用程序時,這不應該是您最關心的問題,除非您正在做某些事情。 Servlet api應該通過讓你訪問Session API來抽象,這個API允許你設置/獲取特定於你所處理客戶端的對象。

+3

Web服務器如何在「HttpRequest」中發送cookie?它不應該發送到'HttpResponse'中嗎?此外,這個答案不回答我的問題,如何或何時Tomcat添加cookie。例如,如果您從Tomcat服務器請求'.html'頁面,則默認情況下它不會向您發送會話cookie,但會在請求jsp時發送。 – Ryan