亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
832
2025-03-31
在Servlet基礎中,我們:
用以下幾種方式實現數據存儲和共享:
1)在客戶端頁面和服務器端程序之間,用request中的getParameter()方法共享數據
2)在請求和請求之間,可以用get/setAttribute方法來共享數據(轉發的時候)
3)同一個Servlet對象,可以用servletConfig(xml)來共享數據(主要是獲取配置信息)
getServletName();獲取servlet的名稱,也就是我們在web.xml中配置的servlet-name
getServletContext(); 獲取ServletContext對象
getInitParameter(String); 獲取在servlet中初始化參數的值。這里注意與全局初始化參數的區分。這個獲取的只是在該servlet下的初始化參數
getInitParameterNames(); //獲取在Servlet中所有初始化參數的名字,也就是key值
4)在整個web應用范圍內,通過ServletContext的set/getAttribute方法共享數據
ServletContext: 代表的是整個應用。一個應用只有一個ServletContext對象。是單實例。
在一定范圍內(當前應用),使多個Servlet共享數據。
現在我們說一個新的話題:會話管理
session/cookie
什么是會話?
會話可簡單理解為:用戶開一個瀏覽器,點擊多個超鏈接,訪問服務器多個web資源,然后關閉瀏覽器,整個過程稱之為一個會話。
?會話過程中要解決的一些問題?
–每個用戶不可避免各自會產生一些數據,程序要想辦法為每個用戶保存這些數據。
–例如:用戶點擊超鏈接通過一個servlet購買了一個商品,程序應該想辦法保存用戶購買的商品,以便于用戶點結帳servlet時,結帳servlet可以得到用戶購買的商品為用戶結帳。
?Cookie
–Cookie是客戶端技術,程序把每個用戶的數據以cookie的形式寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶著各自的數據去。這樣,web資源處理的就是用戶各自的數據了。
?HttpSession
–Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個其獨享的HttpSession對象,由于session為用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的session中,當用戶再去訪問服務器中的其它web資源時,其它web資源再從用戶各自的session中取出數據為用戶服務。
總結:cookie存在客戶端,session存在服務器端
cookie:
API:
public Cookie(String name,String value)
setValue與getValue方法
setMaxAge與getMaxAge方法 (秒)
setPath與getPath方法
setDomain與getDomain方法
getName方法
使用cookie的大概步驟:
1)創建并向客戶端發送Cookie
?創建Cookie對象
–調用Cookie的構造方法,給出Cookie的名稱和Cookie的值,二者都是字符串
?Cookie c = new Cookie(“userName”,”a1234”)
?設置最大時效
–如果要告訴瀏覽器將Cookie存儲到磁盤上,而非僅保存在內存中,使用setMaxAge方法(參數為秒數)
–c.setMaxAge(60*60*24*7)//一周(正數)
?將Cookie放入到HTTP響應中
–使用response.addCookie(c)
–如沒有這一步,將不會有任何Cookie被發送到瀏覽器
2)從客戶端讀取Cookie
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies){
if("userId".equals(cookie.getName())){
//doSomethingWith(cookie.getValue()); }
}
}
session:
同一顏色為一次邏輯,順序為1,2,3,4
session 主要API:
?getAttribute()
–從會話對象中提取出一個之前存儲的屬性值
?如果沒有找到與名稱相關聯的值,則返回null
?setAttribute()
–設置會話對象的屬性名稱和屬性值
?removeAttribute()
–移除與名稱關聯的值
?getAttributeNames()
–返回會話中所有屬性的名稱
?getId()
–返回唯一的標識符
使用session的大概步驟:
//獲取HttpSession對象,設置相關屬性
HttpSession session = req.getSession();
session.setAttribute("userName", userName);
//獲取HttpSession對象,取出相關屬性
HttpSession session = req.getSession();
session.getAttribute("userName", userName);
分享一張尚學堂的我覺得很好的圖
Servlet
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。