採用網址重寫的缺點:java
在有些Web瀏覽器中,URL限制爲2000個字符。數據庫
僅當有連接要插入值時,值才能轉換成後面的資源。此外,要把值添加到靜態頁面的連接中,可不是一件容易的事情。瀏覽器
網址重寫必須在服務器端有效。全部的連接都必須帶有值,這樣可能出現一個問題,即一個頁面中可能會有許多個連接。服務器
某些字符,例如空格、&符號及問號都必須進行編碼。cookie
添加到URL中的信息是明顯可見的,這種狀況有時可不是咱們所期待的。session
網址重寫案例設計:編碼
1.訪問top10,返回一個頁面,該頁面中的每一個按鈕的url都被重寫了,加上了type參數url
2.點擊按鈕後,訪問top10,並帶上Token,服務端根據Token信息返回相應的頁面設計
3.服務器根據用戶選擇的URL信息,返回相應的頁面內容對象
隱藏域案例設計:
1.customer、editCustomer、updateCustomer用同一個Servlet進行處理
2.Customer上edit按鈕,會將用戶id提交給CustomerEdit頁面
3.CustomerEdit上用隱藏域記錄當前正在被編輯用戶的id,update按鈕會將信息提交給updateCustomer
4.updateCustomer完成更新,不返回頁面
Cookie:
cookie是自動地在Web服務器和瀏覽器之間來回傳遞的一小塊信息。
cookie適用於那些須要跨越許多頁面的信息。
因爲cookie是做爲HTTP標頭嵌入的,所以傳輸它的過程由HTTP協議處理。
能夠根據本身的須要設置cookie的有效期限。
對於Web瀏覽器而言,每臺Web 服務器最多能夠支持20個cookie。
Cookie相關方法:
Cookie(String name, String value)
httpServletResponse.addCookie(Cookie cookie)
cookie.getName()
HttpSession對象:
getSession()
getSession(bool create)
setAttribute(String name, Object value)
getAttribute(String name)
getAttributeNames()
getId():得到HttpSession標識符
invalidate():這個方法強制Session過時,並將綁到到Session上的全部對象都解除綁定
getMaxInacitveInterval():瞭解一個HttpSession在用戶最後一次訪問以後還能夠維持多久。
setMaxInactiveInterval():傳遞0,則Session永遠不過時
添加到HttpSession中的值不必定是String,能夠爲任意Java對象,只要它的類實現了java.io.Serializable接口便可,以便當Servlet容器認爲有必要的時候,保存的對象能夠序列化成一個文件或者保存到數據庫中,例如,當容器的內存快要用完的時候。仍然能夠將非序列化的對象保存在HttpSession中,可是若是Servlet容器試圖將它們序列化,將會以失敗了結,並拋出異常。
HttpSession中保存的值不發送到客戶端,這與其餘的Session管理方法不一樣。而是Servlet容器爲它建立的每個HttpSession生成一個惟一標識符,並將這個標識符做爲一個token發送給瀏覽器,通常是做爲一個名爲JSESSIONID的cookie,或者做爲一個jsessionid參數添加到URL後面。在後續的請求中,瀏覽器會將這個token發送回服務器,使服務器可以知道是哪一個用戶在發出請求。不管Servlet容器選擇用哪種方式傳輸session標識答,那都是在後臺自動完成的,不須要你去作額外的處理工做。