session對(duì)象
session對(duì)象是java.servlet.http.Session子類(lèi)的對(duì)象。
表示當(dāng)前的用戶(hù)回話(huà)信息,在session中保存的對(duì)象在當(dāng)前用戶(hù)連接的所有頁(yè)面
都是可以訪(fǎng)問(wèn)的。
可以使用session對(duì)象存儲(chǔ)用戶(hù)登錄網(wǎng)站時(shí)的信息。當(dāng)用戶(hù)在頁(yè)面之間跳轉(zhuǎn)時(shí),
存儲(chǔ)在session對(duì)象中的變量不會(huì)被清除。
對(duì)session的理解
當(dāng)用戶(hù)登錄網(wǎng)站時(shí),系統(tǒng)自動(dòng)分配給用戶(hù)一個(gè)session,可以使用getId()方法得
到該session的ID
<%@ page contentType="text/html;charset=GBK" %>
<HTML>
<BODY>
<%
String str = session.getId();
%>
你的session ID:<%=str%>
</BODY>
</HTML>
這個(gè)ID是唯一標(biāo)識(shí)每一個(gè)用戶(hù),當(dāng)刷新瀏覽器的時(shí)候,這個(gè)值不是變的。
自定義屬性
對(duì)于session對(duì)象中,經(jīng)常用到的方法是setAttribute()、getAttribute()和
removeAttribute()。
分別可以對(duì)session中的對(duì)象進(jìn)行存取和刪除操作。
session對(duì)象的主要用途也是保存信息,當(dāng)用戶(hù)第一次到達(dá)網(wǎng)站時(shí),系統(tǒng)為其分配一個(gè)
session和application一樣也是用自己的自定義屬性。
程序名稱(chēng):5_23.jsp
<%@ page contentType="text/html;charset=GBK" %>
<HTML>
<BODY>
<%
String str="歡迎!";
session.setAttribute("Greeting",str);
out.print((String)session.getAttribute("Greeting"));
%>
<br><a href="5_24.jsp">下一頁(yè)</a>
</BODY>
</HTML>
首先給自定義屬性數(shù)值,然后將該屬性值讀取并顯示出來(lái)。
程序名稱(chēng):5_24.jsp
<%@ page contentType="text/html;charset=GBK" %>
<HTML>
<BODY>
<%
out.print((String)session.getAttribute("Greeting"));
%>
<br><a href="5_24.jsp">下一頁(yè)</a>
</BODY>
</HTML>
在該頁(yè)面中沒(méi)有對(duì)session賦值,同樣也可以得到session的值。主要這要是通過(guò)5_23.jsp文件
的超鏈接打開(kāi)的該文件,如果打開(kāi)一個(gè)新的瀏覽器直接執(zhí)行5_24.jsp文件,就得不到值了
而application的自定義屬性則可以。
cookie對(duì)象
cookie對(duì)象是由Web服務(wù)器端產(chǎn)生后被保存到瀏覽器中的信息。cookie對(duì)象可以用來(lái)保存一些小量
的信息在瀏覽器中。目前主流的瀏覽器都支持cookie。
可以將cookie寫(xiě)到瀏覽器中,讓瀏覽器來(lái)保存cookie的值。
程序名稱(chēng):5_25.jsp(寫(xiě)入cookie)
<%@ page contentType="text/html;charset=GBK" %>
<%
String strName = "wangxuqin";
Cookie c = new Cookie("Name1",strName);
response.addCookie(c);
%>
寫(xiě)入Cookie<br><br>
<a href="5_26.jsp">查看</a>
程序名稱(chēng):5_26.jsp(讀出cookie)
<%@ page contentType="text/html;charset=GBK" %>
<HTML><BODY>
<%
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookie.length();i++)
{
if(cookies[i].getName().equals("Name1"))
{
out.print(cookies[i]).getValue());
}
}
%>
讀出Cookie<br><br>
</BODY></HTML>
在使用cookie時(shí),有一些注意事項(xiàng):
1)cookie的存儲(chǔ)場(chǎng)所是瀏覽器,當(dāng)并不是每一種瀏覽器都具有cookie功能,同時(shí),在客戶(hù)端
的安全性設(shè)置可以禁用cookie。所以不能假設(shè)cookie的寫(xiě)入不一定能夠成功。
2)cookied對(duì)象和resquest對(duì)象(cookie的讀取)或response對(duì)象(cookie的寫(xiě)入)結(jié)合使用。
3)不同 瀏覽器中存儲(chǔ)的cookie不是通用的,例如,IE存儲(chǔ)的cookie只有IE自己可以使用。
4)存儲(chǔ)在瀏覽器中的cookie對(duì)任何Web服務(wù)器都是開(kāi)放的,所以寫(xiě)入的cookie可能被其他網(wǎng)頁(yè)
讀取或覆蓋掉。