session/cookie區別聯絡
jsp/servlet區別聯絡
filter執行流程
opensessioninview原理
clone與servilizable區別聯絡
equals與hashcode聯絡
1) 瀏覽器禁用cookie後,session還能工作嗎?
可以說對和不對,需要解釋
不能使因為沒有採用url
重寫機制()
實質是不能的,但是可以借助其他手段,保證session工作,利用url重寫機制
保證session正常工作通常採用cookie機制,但cookie禁用後,可以利用url重寫機制保證session正常工作.
2) cookie能實現購物車功能嗎?
可以,session能幹的事情,cookie也能,因為session是通過cookie實現的
1. session與cookie的區別聯絡
(1) session和cookie都是儲存使用者狀態資訊的一種機制和手段
(2) session儲存在服務端,cookie儲存在客戶端
(3) session較安全,cookie安全性較差(儲存在客戶端)
(4) cookie可以儲存在客戶端硬碟上,可以儲存時間很長;session儲存在伺服器的內容中,儲存時間較短(tomat預設30分鐘,可以通過setmaxinactiveinterval設定最大存活時間)
(5) session是通過cookie的機制實現的(沒有cookie, session無法工作)
作業系統對記憶體管理方法(最近最少使用等原則)
關閉瀏覽器,session回話就消失是錯誤的,關閉瀏覽器,只能說明不在進行會話,何時銷毀有作業系統決定
利用url重寫,將sessionid放於位址後,必須保證所有頁面都是動態頁面(靜態頁面動態化才可以)
2. session是通過cookie機制實現的
1) 當瀏覽器鍵入url,第一訪問伺服器時候,伺服器為請求生成唯一的標示jsessionid,儲存在伺服器的同時,響應客戶端瀏覽器將jsessionid,寫入到瀏覽器(記憶體或硬碟上);
2) 再次請求時,請求中將客戶端的cookie中的 jessionid傳送給伺服器,伺服器將檢查是否是已經分配的,如果已經分配且未過期,為客戶端服務;如果未分配,生成新的sessionid,返回給瀏覽器,依次伺服器分配sessionid-à傳送給瀏覽器—》瀏覽器在此請求攜帶cookie的jsessionid,在同乙個回話中客戶端與伺服器,通過唯一標示sessionid是否為乙個會話上下文(類似事務,或乙個執行緒)
response.addcookie(name,value);//向客戶端新增cookie
request.getcookie(key);//伺服器端獲得客戶端的cookie
獲得客戶端請求中的cookie
cookie ck = request.getcookies();
客戶端與服務端通過jsessionid關鍵字標示一次會話
jessionid為32位隨機碼
通過重寫url
通過cookie方式類似,只是向伺服器傳遞資訊不通過cookie,通過url中的特定引數傳遞jsessionid
如:http://localhost:8088/test.jsp;jessionid=32222222222332fffffff
位址url中傳遞jessionid不能用普通位址引數格式傳遞
必須是url;jsessionid=…..
必須前邊是分號
//位址重新格式
<%=response.encodeurl(「url」)%>
=è對應結息後方式為
http://url;jsessionid=343434343方式,這樣就可以將服務端分配的jsessionid傳遞到伺服器
無論是位址還是cookie都是為了將jsessionid資訊傳送到伺服器(key:value鍵值對)
所有位址後邊都增加都呼叫方法:response.encodeurl(url),這樣相當生成的位址攜帶者jsessionid
無論是cookie還是url重新,其目的都是為向伺服器傳遞jsessionid的值
對於url重寫,response.encodeurl(url)-à其後位址生成jsessionid引數資訊,但是此引數格式與普通不同必須是」;jsessionid=」+value格式
絕對路徑和相對路徑
(1) 相對路徑相對basepath(http://localhost:8080/sitename/)一定包含」/」
sitename是虛擬路徑名稱
basepath:
string path=request.getcontextpath();
string basepath=request.getschema()+」://」+request.getservername()+」:」+request.getserverport()+path+」/」;
可以修改basepath,適應網頁相對路徑
basepath=basepath+」test/」;//basepath中包含」/」
即: http://localhost:8080/sitename/result.jsp
」/>
可以請求位址相對於basepath
所以完整的請求路徑為
(2) 絕對路徑
相對tomcat的根目錄而言
如果路徑最前邊增加」/」是絕對路徑
如href=」/test/a.jsp
對應請求位址為http://localhost:8080/test/a.jsp
即: http://localhost:8080/result.jsp
路徑上增加」/」表示絕對路徑,絕對路徑相對容器(tomcat根目錄),不加」/」不是相對路徑(相對basepath而言)
(3)當頁面不寫basepath時候,此時相對路徑為webroot
即相對路徑,如果頁面包含basepath就相對basepath,否則相對物理資料夾webroot而言
一般頁面使用相對路徑
href=」<%=request.getcontextpath()%>/test/a.jsp」
request.getcontextpath()=èwebsite的名字
即$他是相對於物理發布路徑而言的(webroot)
request.getcontextpath()詳解
request.getcontextpath()應該是得到專案的名字
<%=request.getcontextpath()%>是為了解決相對路徑的名字的問題,可返回站點的根路徑
request.getscheme();
返回的協議名稱,預設是http
request.getservername()
返回的是你瀏覽器中顯示的主機名,你自己試一下就知道了
getserverport()
獲取伺服器端口號
如果你想得到工程檔案的實際物理路徑,可通過:<%=request.getrealpath("/")%>,這樣頁面就會輸出:d:/web。
j2ee自學心得
學習是一件快樂的事,學習是一件痛苦的事,它讓你能夠把學到的東西帶來財富,它也能讓你仁慈學到的東西帶來無用武之地 看書 當你買了一本新書的時候,不要瀑布式的往下看,這是傳統的學習方法,不適合 現代高科技社會的學習方法,尤其是電腦科學,為什麼以前的瀑布式軟體開發方法到 今天會失敗,因為瀑布式的方法很難看...
j2ee配置指南
j2ee配置指南 1。介紹 本文介紹j2ee環境的配置,所有涉及的檔案都在j2ee安裝目錄下的oncfig目錄,這些檔案都是文字檔案,你可以有任意的文字編輯器來編輯它們。通常情況下,你沒有改變這些檔案的必要。但是如果你使用的資料庫驅動不是cloudscape的時候,你需要 遵循本章的內容進行配置。2...
j2ee基礎選擇
第一章 1.新建struts時描述正確的是a a.myeclipse project capabilities add struts capabilities 選擇struts2.1後彈出另外乙個對話方塊,在該對話方塊中單擊 next 在其中選擇struts2類庫,完成選擇後單擊 開啟 即完成 b....