2011-06-11 49 views
2

我正在用Java編寫一個小型網絡服務器,使用HttpCore來處理大多數Http請求/響應等。
現在我希望能夠創建,存儲和加載Cookie。我在HttpCore找不到任何東西,我不熟悉其他庫。是否有一個現有的庫(最好有一個工作示例)來處理Cookie?使用Java創建和加載Cookie

編輯:我看到我對使用cookie有點困惑。我不完全確定它是如何工作的,但我想保留一個會話,並從Web服務器訪問會話變量。我怎樣才能做到這一點?如果瀏覽器保存cookie,是否將它們發送到服務器?我如何訪問它們?

+0

我希望你已閱讀[「什麼HttpCore不是」](http://hc.apache.org/httpcomponents-core-ga/tutorial/html/preface.html#d4e39)。除非被告知這麼做,否則它自己的服務器不會創建,加載和存儲Cookie。您需要爲您的服務器構建一個將由開發人員調用的API(例如)。如果您需要幫助,請參閱Tomcat的基本工作原理。 – 2011-06-11 15:40:13

+0

那麼,我會很感激你指着我的方向來處理cookies的圖書館。 – 2011-06-11 15:43:16

+0

我編輯了我的評論。看看一個servlet容器,這是瞭解這個工作原理的最簡單方法。避免查看HttpClient,爲您提供場景的客戶端視圖。 – 2011-06-11 15:44:13

回答

2

服務器中的會話支持通常使用對象存儲進行構建。一個簡單的對象存儲將是一個Map或一個Set。該商店中的對象(在Map情況下的值)與邏輯會話的概念具有一對一映射,即對於服務器創建的每個會話,商店中將有一個項目。

商店管理的會話可能允許屬性與它們關聯。這些屬性的列表可能不會事先知道,因此您需要另一個地圖用於此目的;鍵將是屬性名稱,並且值將是屬性值。

就會話存儲管理而言,當您對服務器進行API調用時,您需要在存儲中創建新的會話。簡而言之,如果Web應用程序決定需要創建會話,則服務器的API必須提供必要的接口。單獨創建會話對象是不夠的;您還需要在第一次創建會話時將會話ID寫爲cookie。 API必須允許在這種情況下編寫適當的響應。您可能需要查看Servlet API,特別是HttpServletRequest和HttpSession類,以及用於此目的的servlet容器實現。

關於從請求訪問cookie的話題,您需要解析傳入的HTTP請求頭以檢查瀏覽器發送的任何cookie。爲此,瀏覽器和其他HTTP客戶端需要使用Set-Cookie請求標頭。只有在請求中提供了有效的cookie時,才需要確保會話對象可以返回到Web應用程序。