溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Session對象如何使用

發(fā)布時間:2022-09-28 15:36:49 來源:億速云 閱讀:162 作者:iii 欄目:編程語言

這篇文章主要介紹“Session對象如何使用”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Session對象如何使用”文章能幫助大家解決問題。

session在網(wǎng)絡(luò)中被稱為會話。由于HTTP協(xié)議是一種無狀態(tài)協(xié)議,也就是當(dāng)一個客戶向服務(wù)器發(fā)出請求,服務(wù)器接收請求,并返回響應(yīng)后,該連接就結(jié)束了,而服務(wù)器并不保存相關(guān)的信息。為了彌補這一缺點,HTTP協(xié)議提供了session。通過session可以在應(yīng)用程序的Web頁面間進(jìn)行跳轉(zhuǎn)時,保存用戶的狀態(tài),使整個用戶會話一直存在下去,知道關(guān)閉瀏覽器。但是,如果在一個會話中,客戶端長時間不向服務(wù)器發(fā)出請求,session對象就會自動消失。這個時間取決于服務(wù)器,例如,Tomcat服務(wù)器默認(rèn)為30分鐘。不過這個時間可以通過編寫程序進(jìn)行修改。

創(chuàng)建及獲取客戶端的會話

setAttribute()方法:將信息保存在session范圍內(nèi)

session.setAttribute(String name, Object obj)

參數(shù)說明:

name:用于指定作用域在session范圍內(nèi)的變量名

obj:保存在session范圍內(nèi)的對象

getAttribute()方法:獲取保存在session范圍內(nèi)的信息

session.getAttribute(String name)

參數(shù)說明:

name:指定保存在session范圍內(nèi)的關(guān)鍵字

說明:getAttribute()方法的返回值是Object類型,如果將獲取到的信息賦值給String類型的變量,則需要進(jìn)行強制類型轉(zhuǎn)換或是調(diào)用其toString()方法。

移除session中指定的對象

session.removeAttribute()方法:移除存儲在session會話中的對象

session.removeAttribute(String name)

參數(shù)說明:

name:指定作用域在session范圍內(nèi)的變量名。一定要保證該變量在session范圍內(nèi)有效,否則將拋出異常。

銷毀session

session.invalidate()方法:銷毀session

session.invalidate()

說明:session對象被銷毀后,將不可以再使用該session對象了。如果在session被銷毀后,再調(diào)用session對象的任何方法,都將報出Session already invalidated異常。

session會話超時管理

在應(yīng)用session對象時應(yīng)該注意session的生命周期。一般來說,session的生命周期在20~30分鐘之間。當(dāng)用戶首次訪問時將產(chǎn)生一個新的會話,以后服務(wù)器就可以記住這個會話狀態(tài),當(dāng)會話生命周期超時時,或者服務(wù)器端強制使會話失效時,這個session就不能使用了。在開發(fā)程序時應(yīng)該考慮到用戶訪問網(wǎng)站時可能發(fā)生的各種情況,例如用戶登錄網(wǎng)站后在session的有效期外進(jìn)行相應(yīng)的操作,用戶會看到一張錯誤頁面。這樣的現(xiàn)象時不允許發(fā)生的。為了避免這種情況的發(fā)生,在開發(fā)系統(tǒng)時應(yīng)該對session的有效性進(jìn)行判斷。

session.getLastAccessedTime():返回客戶端最后一次與會話相關(guān)聯(lián)的請求時間

session.getMaxInactiveInterval():以秒為單位返回一個會話內(nèi)兩個請求最大時間間隔

session.setMaxInactiveInterval():以秒為單位設(shè)置session的有效時間

session.getLastAccessedTime();session.getMaxInactiveInterval();session.setMaxInactiveInterval(int arg);

參數(shù)說明:

arg:seesion的有效期(單位:秒)

session對象的應(yīng)用實例

index.jsp:提供用戶輸入用戶名的文本框,并提交到session.jsp頁面中

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>session對象的使用-index.jsp</title></head><body><form id="form1" name="form1" method="post" action="session.jsp">
    <div align="center">
        <table width="28%" border="0">
            <tr>
                <td width="36%">
                    <div align="center">您的名字是:</div>
                </td>
                <td width="64%">
                    <label>
                        <div align="center">
                            <input type="text" name="name" />
                        </div>
                    </label>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <label>
                        <div align="center">
                            <input type="submit" name="Submit" value="提交" />
                        </div>
                    </label>
                </td>
            </tr>
        </table>
    </div></form></body></html>

session.jsp:將用戶名保存到session中,并提供用戶輸入最喜歡去的地方的文本框

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>session對象的使用-session.jsp</title></head><body>
    <%
        String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");      //獲取用戶填寫的用戶名        session.setAttribute("name", name);             //將用戶名保存到session對象中
    %>
    <div align="center">
        <form id="form1" name="form1" method="post" action="result.jsp">
            <table width="28%" border="0">
                <tr>
                    <td>您的名字是:</td>
                    <td><%=name %></td>
                </tr>
                <tr>
                    <td>您最喜歡去的地方是:</td>
                    <td><label>
                        <input type="text" name="address" />
                    </label></td>
                </tr>
                <tr>
                    <td colspan="2"><label>
                        <div align="center">
                            <input type="submit" name="Submit" value="提交" />
                        </div>
                    </label></td>
                </tr>
            </table>
        </form>
    </div></body></html>

result.jsp:獲取session中的用戶名對象,再獲取session.jsp頁面提交過來的最喜歡去的地方,并在頁面中顯示出來

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>session對象的使用-result.jsp</title></head><body>
    <%
        String name = (String)session.getAttribute("name");     //獲取保存在session范圍內(nèi)的對象        String solution = new String(request.getParameter("address").getBytes("ISO-8859-1"),"utf-8");
        //獲取用戶輸入的最喜歡去的地方
    %>
    <form id="form1" name="form1" method="post" action="">
        <table width="28%" border="0">
            <tr>
                <td colspan="2"><div align="center"><strong>
                    顯示答案                </strong></div></td>
            </tr>
            <tr>
                <td width="49%"><div align="left">
                    您的名字是:                </div></td>
                <td width="51%"><label><div align="left">
                    <%=name %>
                </div></label></td>
            </tr>
            <tr>
                <td><label><div align="left">
                    您最喜歡去的地方是:                </div></label></td>
                <td><div align="left">
                    <%=solution %>
                </div></td>
            </tr>
        </table>
     
    </form></body></html>

關(guān)于“Session對象如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI