1、什麼是session?
當用戶打開瀏覽器,訪問某個網站時,服務器就會在服務器的內存爲該服務器分配一個空間,該空間被這個瀏覽器獨佔。這個空間就是session,該空間的數據默認保留時間30min。
2、session可以用來做什麼?
1)、網上商城中的購物車
2)、保存登錄用戶的信息
3)、將某些數據放入到session中,供同一用戶的各個頁面使用。
4)、防止用戶非法登錄到某個頁面
......
3、如何使用session(這裏我們談一下與Servlet中的對比)
(1)得到session
Servlet中:HttpSession hs=request.getSession(true);(這裏的HttpSession其實和session是一回事)
jsp中:session是一個內置對象,可以直接使用(session其實java九大內置對象之一)
(2)向session添加屬性
Servlet中:hs.setAttribute(String name,Object val);
jsp中:session.setAttribute(String name,Object o);
(3)從session得到某個屬性
Servlet中:hs.getAttribute(String name);
jsp中:session.getAttribute(String name);
(4)從session刪除某個屬性
Servlet:hs.removeAttribute(String name);
jsp中:session.removeAttribute(String name);
session的時效性30分鐘,這是指的發呆時間。
示例:
sessionTest1.jsp頁面
<body>
<h1>給session添加屬性</h1>
<%
session.setAttribute("myname","景陳勇");
session.setMaxInactiveInterval(20);//這裏20指的是20秒,只要在20秒之內一直沒有訪問過session,那麼session就失效了。
out.println("添加了一個屬性,名字是myName:對應的值是:景陳勇");
%>
</body>
sessionTest2.jsp頁面
<body>
<h1>得到某個屬性</h1>
<%
String name=(String)session.getAttribute("myname");
out.println("得到的屬性是:"+name);
out.println("session id="+session.getId());//每一個session id都是唯一的
%>
</body>
4、session技術防止非法登錄
//防止用戶非法登錄
String u=(String)session.getAttribute("myName");
//如果用戶沒有登錄
if(u==null){
//返回登錄界面
response.sendRedirect("login.jsp?err=1");
return;//這個不能少,否則的話還會執行下面的代碼
}
%>
String err=request.getParameter("err");
if(err!=null){
if(err.equals("1")){
out.println("<font color=red size=7>用戶沒有正常登錄,請登錄!</font><br/>");
}
}
5、session技術的缺點:
因爲session的各個屬性要佔用內存,因此軟件公司都是在迫不得已的情況下,才使用。
一般使用情況:
a:保存用戶信息;b:保存購物車;