2014-07-08 45 views
0

我想要使用jsp和java存儲cookie,而且我想要的是cookies只能在tomcat服務器運行時才存儲,並且一旦tomcat服務器關閉就應該過期。我知道cookie依賴於瀏覽器,不依賴於服務器,所以我該如何做到這一點?有什麼辦法可以做到這一點?
P.S.我對cookie不熟悉,因此對它不太瞭解。如何在tomcat服務器關閉時刪除cookie?

+0

你不能。就如此容易。但是,一旦服務器重新啓動並且新的請求帶有這樣的舊cookie,什麼都不能阻止你忽略或刪除舊的cookie。你想達到什麼目的?你爲什麼不使用會話,這會像我剛纔描述的那樣行事? –

+0

你是否手動關閉了tomcat,或者它可能會停止對某些內部錯誤的工作? – Jack

+1

P.S.如果你不熟悉cookies,那麼先來研究它們。這就是你如何學習你知道的新事物,而不僅僅是要求在stackoverflow上。 – Kayaman

回答

0

Cookies是保存在客戶端,可以通過調用API

  • 時自動會議不見了
  • 時自動cookie被過期被刪除

    當容器(在你的情況下,tomcat)重新啓動時,Cooke不會自動移除。這很好。試想一下,每次Google執行一些維護時,所有用戶都必須再次進行身份驗證。順便說一句,這就是爲什麼我認爲你走錯了路。

    但無論如何,問題是如何解決問題。 答案是最簡單的方法是使用會話cookie。當會話被刪除時

    • 會話過期
    • 容器重啓這種情況發生這樣的cookie將被刪除。 (但是爲了安全起見,在tomcat關閉之前刪除位於tomcat主目錄下的工作目錄的內容,然後再重新啓動它。這是因爲tomcat在重新啓動後持續保留了會話,以便能夠連接到同一會話。)

    如果這些解決方案對您有好處,那就去做吧。

    如果不是,您可以通過編程方式進行管理。每次你的應用程序開始創建某種類型的ID。例如,這可能是服務器的啓動時間。在客戶端將此開始時間保存在cookie中。該cookie將隨每個用戶請求(連同其他所有cookie)一起發送到服務器。將這個ID與存儲在服務器端的ID進行比較,如果這些ID不相等,則使所有Cookie無效。

    這是可能的,將完全按照您的解釋工作,但同樣如此:我相信您有一個架構問題。嘗試在你解釋你的需求的地方問別的問題(不是cokies等 - 功能需求),建議你的設計,並要求提供建議如何改進。

  • 0

    不能。但是,您可以使用會話存儲您認爲需要存儲在Cookie中的任何內容。當服務器停止時,會話就會消失,除非你做了一些事情來堅持它們。

    +0

    當服務器停止時會話消失或者當用戶退出應用程序? – cooljohny

    +0

    何時發生。兩者都會導致會議消失。 – nitind

    相關問題