第十四天 Session

2021-07-26 06:24:16 字數 1592 閱讀 3149

session通過sessionid來區分不同的客戶,session是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會創造乙個名為jsessionid的輸出cookie,這稱之為session cookie,以區別persistent cookies

通常看不到jsessionid,但是當把瀏覽器的cookie禁止後,web伺服器會採用url重寫的方式傳遞sessionid

httpsession 生命週期

1.什麼時候建立httpsession物件

對於jsp:

若當前的jsp是客戶端訪問web應用的第乙個資源,且jsp的page指定的session屬性為false,則不會建立httpsession物件

若當前jsp不是客戶端訪問web應用的第乙個資源,且其他頁面已經建立了乙個httpsession物件,則會返回乙個會話的httpsession物件,而不會建立乙個新的

對於servlet

若servlet是客戶端訪問的第乙個web應用資源,則只有呼叫了request.getsession()或request.getsession(true)才會建立httpsession物件:request.getsession().setattribute("name", value);

session="false" 當前頁面禁用session隱含變數,但可以使用其他的顯式的httpsession物件

銷毀httpsession

1.程式呼叫httpsession.invalidate()

2.距離上一次收到客戶端傳送的session id時間間隔超過了session的最大有效時間

3.伺服器程序被停止

注意:關閉瀏覽器只會使儲存在客戶端瀏覽器記憶體中的session cookie失效,不會使服務端的session物件失效

httpsession的相關api

1.獲取session物件 request.getsession() request.getsession(boolean create)

2.屬性相關的setattribute getattribute removeattribute

3.使httpsession失效的invalidate()

4.設定最大時效的setmaxinactiveinterval

url重寫

servlet規範中引入了一種補充的會話管理機制,它允許不支援cookie的瀏覽器也可以與web伺服器保持連續的會話

" >重新登陸

開發時建議編寫絕對路徑:

request.getcontextpath()

如何避免表單的重複提交:在表單中做乙個標記,提交到servlet時,檢查標記是否存在且是否和預定義的標記一致,若一致則受理請求,並銷毀標記,若不一致或沒有標記,則直接顯示相應資訊:重複提交(session配合隱藏域)  參看並使用tokenprocessor類

使用httpsession實現驗證碼,基本原理和表單重複提交一致

在原表單頁面 將隨機字串放入到session中 並放在隱藏域中(驗證碼為輸入框) 提交表單

在目標的servlet中,獲取session和表單中的值 比較兩個值 若一致,受理請求且把session域中屬性清除

若不一致,則通過重定向的方式返回原表單頁面

第十四天 response

教學導航 教學目標 案例二 生成驗證碼 了解 教學方法 我們在建立servlet時會覆蓋service 方法,或doget dopost 這些方法都有兩個引數,乙個為代表請求的request和代表響應response。service方法中的response的型別是servletresponse,而d...

Qt第十四天

qfiledialog檔案對話方塊 qcolordialog顏色對話方塊 qfontdialog字型對話方塊 qinputdialog輸入對話方塊 qmessagebox訊息框 dialog.h ifndef dialog h define dialog h include namespace ui...

Python 第十四天

物件導向程式設計 object oriented programming,簡稱 oop 是一種封裝 的方法。封裝,其實就是隱藏實現功能的具體 僅留給使用者使用的介面,就好像使用計算機,使用者只需要使用鍵盤 滑鼠就可以實現一些功能,而根本不需要知道其內部是如何工作的。python 中,建立乙個類使用c...