J2ee技術難點

2022-07-16 03:30:16 字數 4447 閱讀 3451

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