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...