Servlet和Jsp中的session技術

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技術防止非法登錄

比如我有個login.jsp頁面,一個wel.jsp頁面,原本是這樣的,用戶訪問login.jsp頁面,輸入用戶名和密碼後登錄wel.jsp頁面。但是當用戶直接訪問wel.jsp頁面時就也可以訪問。這種情況下就可以用session解決。可以在登錄login.jsp經過控制器驗證通過時,在session中添加用戶名:request.getSession().setAttribute("myName", u)。那麼我們在wel.jsp時,先獲取這個session,看看是不是爲空,如果爲空的話,就跳轉到login.jsp界面。這樣就可以防止用戶直接訪問wel.jsp也能登錄的情況。wel.jsp獲得session驗證代碼如下:
<body>
<%
  //防止用戶非法登錄
  String u=(String)session.getAttribute("myName");
  //如果用戶沒有登錄
  if(u==null){
  //返回登錄界面
  response.sendRedirect("login.jsp?err=1");
  return;//這個不能少,否則的話還會執行下面的代碼
  }
%>
......
</body>

補充:因爲我在跳轉到login.jsp設置了err=1狀態碼。那麼我的login.jsp頁面也添加了點東西。如下面所示:
<%
  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:保存購物車; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章