亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
JSP 基礎(chǔ)教程 JSP 開發(fā)環(huán)境搭建 JSP 結(jié)構(gòu) JSP 生命周期 JSP 語法 JSP 指令 JSP 動作元素 JSP 隱式對象 JSP 客戶端請求 JSP 服務(wù)器響應(yīng) JSP HTTP 狀態(tài)碼 JSP 表單處理 JSP 過濾器 JSP Cookies 處理 JSP Session JSP 文件上傳 JSP 日期處理 JSP 頁面重定向 JSP 點(diǎn)擊量統(tǒng)計 JSP 自動刷新 JSP 發(fā)送郵件 JSP 高級教程 JSP 標(biāo)準(zhǔn)標(biāo)簽庫(JSTL) <c:out> 標(biāo)簽 <c:set> 標(biāo)簽 <c:remove> 標(biāo)簽 <c:catch> 標(biāo)簽 <c:if> 標(biāo)簽 <c:choose> <c:import> 標(biāo)簽 <c:forEach> <c:param> 標(biāo)簽 <c:redirect> 標(biāo)簽 <fmt:formatNumber>標(biāo)簽 <fmt:parseNumber> 標(biāo)簽 <fmt:formatDate> 標(biāo)簽 <fmt:parseDate> 標(biāo)簽 <fmt:bundle> 標(biāo)簽 <fmt:setLocale> 標(biāo)簽 <fmt:setBundle> 標(biāo)簽 <fmt:timeZone> 標(biāo)簽 <fmt:setTimeZone> 標(biāo)簽 <fmt:message> 標(biāo)簽 <fmt:requestEncoding> 標(biāo)簽 <sql:setDataSource> 標(biāo)簽 <sql:query> 標(biāo)簽 <sql:update> 標(biāo)簽 <sql:param> 標(biāo)簽 <sql:dateParam> 標(biāo)簽 <sql:transaction> 標(biāo)簽 <x:out> 標(biāo)簽 <x:parse> 標(biāo)簽 <x:set> 標(biāo)簽 <x:if> 標(biāo)簽 <x:forEach> 標(biāo)簽 <x:choose> <x:transform> 標(biāo)簽 <x:param> 標(biāo)簽 fn:contains()函數(shù) fn:containsIgnoreCase()函數(shù) fn:endsWith()函數(shù) fn:escapeXml()函數(shù) fn:indexOf()函數(shù) fn:join()函數(shù) fn:length()函數(shù) fn:replace()函數(shù) fn:split()函數(shù) fn:startsWith()函數(shù) fn:substring()函數(shù) fn:substringAfter()函數(shù) fn:substringBefore()函數(shù) fn:toLowerCase()函數(shù) fn:toUpperCase()函數(shù) fn:trim()函數(shù) JSP 連接數(shù)據(jù)庫 JSP XML 數(shù)據(jù)處理 JSP JavaBean JSP 自定義標(biāo)簽 JSP 表達(dá)式語言 JSP 異常處理 JSP 調(diào)試 JSP 國際化
watak

JSP Session


HTTP是無狀態(tài)協(xié)議,這意味著每次客戶端檢索網(wǎng)頁時,都要單獨(dú)打開一個服務(wù)器連接,因此服務(wù)器不會記錄下先前客戶端請求的任何信息。

有三種方法來維持客戶端與服務(wù)器的會話:


Cookies

網(wǎng)絡(luò)服務(wù)器可以指定一個唯一的session ID作為cookie來代表每個客戶端,用來識別這個客戶端接下來的請求。

這可能不是一種有效的方式,因?yàn)楹芏鄷r候?yàn)g覽器并不一定支持cookie,所以我們不建議使用這種方法來維持會話。


隱藏表單域

一個網(wǎng)絡(luò)服務(wù)器可以發(fā)送一個隱藏的HTML表單域和一個唯一的session ID,就像下面這樣:

<input type="hidden" name="sessionid" value="12345">

這個條目意味著,當(dāng)表單被提交時,指定的名稱和值將會自動包含在GET或POST數(shù)據(jù)中。每當(dāng)瀏覽器發(fā)送一個請求,session_id的值就可以用來保存不同瀏覽器的軌跡。

這種方式可能是一種有效的方式,但點(diǎn)擊<A HREF>標(biāo)簽中的超鏈接時不會產(chǎn)生表單提交事件,因此隱藏表單域也不支持通用會話跟蹤。


重寫URL

您可以在每個URL后面添加一些額外的數(shù)據(jù)來區(qū)分會話,服務(wù)器能夠根據(jù)這些數(shù)據(jù)來關(guān)聯(lián)session標(biāo)識符。

舉例來說,http://shouce.ren/file.htm;sessionid=12345, session標(biāo)識符為sessionid=12345,服務(wù)器可以用這個數(shù)據(jù)來識別客戶端。

相比而言,重寫URL是更好的方式來,就算瀏覽器不支持cookies也能工作,但缺點(diǎn)是您必須為每個URL動態(tài)指定session ID,就算這是個簡單的HTML頁面。


session對象

除了以上幾種方法外,JSP利用servlet提供的HttpSession接口來識別一個用戶,存儲這個用戶的所有訪問信息。

默認(rèn)情況下,JSP允許會話跟蹤,一個新的HttpSession對象將會自動地為新的客戶端實(shí)例化。禁止會話跟蹤需要顯式地關(guān)掉它,通過將page指令中session屬性值設(shè)為false來實(shí)現(xiàn),就像下面這樣:

<%@ page session="false" %>

JSP引擎將隱含的session對象暴露給開發(fā)者。由于提供了session對象,開發(fā)者就可以方便地存儲或檢索數(shù)據(jù)。

下表列出了session對象的一些重要方法:

S.N. 方法 & 描述
1 public Object getAttribute(String name) 返回session對象中與指定名稱綁定的對象,如果不存在則返回null
2 public Enumeration getAttributeNames() 返回session對象中所有的對象名稱
3 public long getCreationTime() 返回session對象被創(chuàng)建的時間, 以毫秒為單位,從1970年1月1號凌晨開始算起
4 public String getId() 返回session對象的ID
5 public long getLastAccessedTime() 返回客戶端最后訪問的時間,以毫秒為單位,從1970年1月1號凌晨開始算起
6 public int getMaxInactiveInterval() 返回最大時間間隔,以秒為單位,servlet 容器將會在這段時間內(nèi)保持會話打開
7 public void invalidate() 將session無效化,解綁任何與該session綁定的對象
8 public boolean isNew( 返回是否為一個新的客戶端,或者客戶端是否拒絕加入session
9 public void removeAttribute(String name) 移除session中指定名稱的對象
10 public void setAttribute(String name, Object value)? 使用指定的名稱和值來產(chǎn)生一個對象并綁定到session中
11 public void setMaxInactiveInterval(int interval) 用來指定時間,以秒為單位,servlet容器將會在這段時間內(nèi)保持會話有效

JSP Session應(yīng)用

這個例子描述了如何使用HttpSession對象來獲取創(chuàng)建時間和最后一次訪問時間。我們將會為request對象關(guān)聯(lián)一個新的session對象,如果這個對象尚未存在的話。

<%@ page import="java.io.*,java.util.*" %>
<%
   // 獲取session創(chuàng)建時間
   Date createTime = new Date(session.getCreationTime());
   // 獲取最后訪問頁面的時間
   Date lastAccessTime = new Date(session.getLastAccessedTime());

   String title = "Welcome Back to my website";
   Integer visitCount = new Integer(0);
   String visitCountKey = new String("visitCount");
   String userIDKey = new String("userID");
   String userID = new String("ABCD");

   // 檢測網(wǎng)頁是否由新的訪問用戶
   if (session.isNew()){
      title = "Welcome to my website";
      session.setAttribute(userIDKey, userID);
      session.setAttribute(visitCountKey,  visitCount);
   } 
   visitCount = (Integer)session.getAttribute(visitCountKey);
   visitCount = visitCount + 1;
   userID = (String)session.getAttribute(userIDKey);
   session.setAttribute(visitCountKey,  visitCount);
%>
<html>
<head>
<title>Session Tracking</title>
</head>
<body>
<center>
<h1>Session Tracking</h1>
</center>
<table border="1" align="center"> 
<tr bgcolor="#949494">
   <th>Session info</th>
   <th>Value</th>
</tr> 
<tr>
   <td>id</td>
   <td><% out.print( session.getId()); %></td>
</tr> 
<tr>
   <td>Creation Time</td>
   <td><% out.print(createTime); %></td>
</tr> 
<tr>
   <td>Time of Last Access</td>
   <td><% out.print(lastAccessTime); %></td>
</tr> 
<tr>
   <td>User ID</td>
   <td><% out.print(userID); %></td>
</tr> 
<tr>
   <td>Number of visits</td>
   <td><% out.print(visitCount); %></td>
</tr> 
</table> 
</body>
</html>

試著訪問http://localhost:8080/main.jsp ,第一次運(yùn)行時將會得到如下結(jié)果:

再次訪問,將會得到如下結(jié)果:


刪除Session數(shù)據(jù)

當(dāng)處理完一個用戶的會話數(shù)據(jù)后,您可以有如下選擇:

  • 移除一個特定的屬性:

    調(diào)用public void removeAttribute(String name)? 方法來移除指定的屬性。

  • 刪除整個會話:

    調(diào)用public void invalidate() 方法來使整個session無效。

  • 設(shè)置會話有效期:

    調(diào)用 public void setMaxInactiveInterval(int interval)? 方法來設(shè)置session超時。

  • 登出用戶:

    支持servlet2.4版本的服務(wù)器,可以調(diào)用 logout()方法來登出用戶,并且使所有相關(guān)的session無效。

  • 配置web.xml文件:

    如果使用的是Tomcat,可以向下面這樣配置web.xml文件:

  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>

超時以分鐘為單位,Tomcat中的默認(rèn)的超時時間是30分鐘。

Servlet中的getMaxInactiveInterval( ) 方法以秒為單位返回超時時間。如果在web.xml中配置的是15分鐘,則getMaxInactiveInterval( ) 方法將會返回900。

關(guān)于我們 聯(lián)系我們 留言板

手冊網(wǎng)

Artikel sebelumnya: Artikel seterusnya: