session cookie等

Session   信息保存在服務器端,爲了安全,項目一般都是用Session,可以防止非法登錄

Cookie        信息保存在客戶端

 

Http是無狀態的,也就是說不需要記錄使用者是誰。因此效率比較高;而比如登錄郵箱是有狀態的。

可以用HttpSession來保持狀態。

 

Session的生命週期:

          當客戶第一次與服務器連接時,服務器爲客戶創建一個新的會話對象,併爲會話對象生成一個惟一的ID

          當服務器處理完請求後,會將在生成的響應中將會話ID加入響應中去,與其它信息一直返回客戶端

          服務器會爲客戶端保存這個會話對象一段時間

          客戶端下一次訪問服務器時,會在請求頭中加入會話ID

 

如何得到一個session:

 HttpSession session = req.getSession(bollean 參數);默認是true,意思是已經有session就使用,沒有就創建;false是有session就是用,沒有就什麼也不做,主要用在註銷操作。

 

可以用超級鏈接實現用戶信息在多個頁面轉發

 

getParametergetAttribute的區別:

前者是取得前臺參數,不需要set方法就可以直接取得;

後者是從後臺取得數據,需要set方法才能使用get方法取得後臺參數。

 

Session的銷燬的3種方式:

Invalidate()立即註銷;

web.xml配置,可配置一個存活時間;

setMaxInactiveInterval()一般不用這個

 

URL重寫:

URL重寫的重要方法:

          response.encodeURL(“”)

          Response.sendRedirect(response.encodeRedirectURL(“”));

Response.encodeRedirectURl作用是將客戶端ID加到了URL後面,相當於重定向了一個新的請求

 

會話中的幾種重要方法:

        Session.isNew();

判斷session是否爲新建立的

        Session.invalidate();

清空session對象裏的東西,並不指清除這個session對象本身

        Session.setAttribute();

        Session.getAttribute();

JSPrequestsetAttribute()getAttribute()Session.setAttribute();Session.getAttribute();

有什麼不同:

作用域不同:  
  1
request對象的作用域是其請求所指向的網頁,如a.jsp網頁所請求的網頁是next.jsp,那麼request對象所存儲的變量就只能由 a.jsp傳向next.jsp網頁,而不能實現多個網頁之間的狀態傳遞,注意請求網頁頁可以是Servlet程序
 
  2
session對象所存儲的變量可以在一次會話過程中傳遞,如登錄電子商務網站,購物車的狀態就是存儲在session對象中的
 
 

 

Cookiesession的區別:

具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在服務器端保持狀態的方案。同時我們也看到,由於採用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制來達到保存標識的目的。

 

 

防止非法登錄:

success.jsp的前面加入:

<%if((String)session.getAttribute("userName")==null){

   

    response.sendRedirect("/servlet_session_project/index.jsp");

 

} %>

如果在url裏直接登陸,則userNamenull,如果爲null則跳轉到登陸界面。

發佈了26 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章