『壹』 在web應用中session管理有幾種方式試用三種方式設置session超時時間,並分別簡述其優缺點
1、操作系統(System):
步驟:開始——〉管理工具——〉Internet信息服務(IIS)管理器——〉網站——〉默認網站——〉右鍵「屬性」——〉主目錄——〉配置——〉選項——〉啟用會話狀態——〉會話超時(在這兒設置你要的超時時間,單位分鍾)。確定即可。
2、ASP.NET應用程序中Session過期時間的設置
在ASP.NET這樣的Web應用中,Session是用來保存用戶狀態的常用手段,不過由於伺服器內存空間是有限的,因此Session過期時間設置是很有必要的。在ASP.NET中怎麼設置Session的過期時間呢,很容易,修改web.config配置。
具體修改方法如下,在web.config中進行如下配置
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
在這里指的是Session過期時間為30分鍾。也就是說30分鍾後假如當前用戶木有操作,那麼Session就會自動過期了。
3、在調出使用Session的cs頁中,Load事件里邊寫以下
Session.Timeout = 30;
4、Store session in asp.net state service
<sessionState cookieless="false" timeout="480" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;passWORD=" />
看一下,看你的程序是用到了哪種設置方式,把時間改成你要的時間就可以了。
『貳』 如何理解session在Web項目中的作用
Session是保存在服務端的,如果多個用戶同時登錄系統,那麼你的程序保存的session就不知道是哪一個,另外,建議不要使用你的靜態類,多用戶登錄也會存在相同的問題,請使用如下代碼:
Session[Session.SessionID+"name"]=txtloginname.Text;
取值時直接用:
string name=Session[Session.SessionID+"name"].ToString();
特別注意Session.SessionID是唯一的,這樣就保證了唯一性
『叄』 Session是什麼
session:在計算機中,尤其是在網路應用中,稱為「會話」。
session直接翻譯成中文比較困難,一般都譯成時域。在計算機專業術語中,session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。
具體到web中的session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,session實際上是一個特定的時間概念。
需要注意的是,一個session的概念需要包括特定的客戶端,特定的伺服器端以及不中斷的操作時間。a用戶和c伺服器建立連接時所處的session同b用戶和c伺服器中建立連接時所處的sessions是兩個不同的session。
那什麼是session的解決方案呢?我們知道,用戶訪問一個網站時往往需要瀏覽許多網頁。對於一個通過php構築的網站來說,用戶在訪問的過程中需要執行許多的php腳本。然而由於http協議自身的特點,用戶每執行一個php腳本都需要和web伺服器重新建立連接。
又由於無狀態記憶的特點,此次連接無法得到上次連接的狀態。這樣,用戶在一個php腳本中對一個變數進行了賦值操作,而在另外一個php腳本中卻無法得到這個變數的值。例如,用戶在負責登錄的php腳本中設置了$user="wind",卻無法在另一個php腳本中通過調用$user來獲得「wind」這個值。也就是說,在php中無法設置全局變數。每個php腳本中所定義的變數都是只在這個腳本內有效的局部變數。
session解決方案,就是要提供在php腳本中定義全局變數的方法,使得這個全局變數在同一個session中對於所有的php腳本都有效。上面我們提到了,session不是一個簡單的時間概念,一個session中還包括了特定的用戶和伺服器。因此更詳細地講,在一個session定義的全局變數的作用范圍,是指這個session所對應的用戶所訪問的所有php。
例如a用戶通過session定義了一個全局變數$user=「wind」中,而b用戶通過session定義的全局變數$user=「jane」。那麼在a用戶所訪問的php腳本中,$user的值就是wind。
『肆』 在每次訪問web應用的時候都會創建一個session。怎樣能實現session的單例。
Session不可能單例。如果使用單例的話就意味著整個應用程序的所有用戶共享同個Session (全局)。而session主要的作用是為每個登錄用戶創建一個會話。這於session的作用相違背
如何lz想要保存全局的數據的話,可以使用Application對象。
『伍』 WEB應用中的SESSION知多少
Session機制採用的是在伺服器端保持狀態的方案。
1、Session在何時被創建
Session在有客戶端訪問時就被創建,然而事實是直到某server端程序調用 HttpServletRequest.getSession(true)這樣的語句時才被創建,注意如果JSP沒有顯示的使用 <%@page Session=」false」%> 關閉Session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession Session = HttpServletRequest.getSession(true);這也是JSP中隱含的Session對象的來歷。由於Session會消耗內存資源,因此,如果不打算使用Session,應該在所有的JSP中關閉它。
2、Session何時被刪除
綜合前面的討論,Session在下列情況下被刪除:
a.程序調用HttpSession.invalidate();
b.距離上一次收到客戶端發送的Session id時間間隔超過了Session的超時設置;
c.伺服器進程被停止(非持久Session)。
3、如何做到在瀏覽器關閉時刪除Session
嚴格的講,做不到這一點。可以做一點努力的辦法是在所有的客戶端頁面里使用javascript代碼window.oncolose來監視瀏覽器的關閉動作,然後向伺服器發送一個請求來刪除Session。但是對於瀏覽器崩潰或者強行殺死進程這些非常規手段仍然無能為力。
4、有個HttpSessionListener是怎麼回事
你可以創建這樣的listener去監控Session的創建和銷毀事件,使得在發生這樣的事件時你可以做一些相應的工作。注意是Session的創建和銷毀動作觸發listener,而不是相反。類似的與HttpSession有關的listener還有 HttpSessionBindingListener,HttpSessionActivationListener和 HttpSessionAttributeListener。
5、存放在Session中的對象必須是可序列化的嗎
不是必需的。要求對象可序列化只是為了Session能夠在集群中被復制或者能夠持久保存或者在必要時server能夠暫時把Session交換出內存。在Weblogic Server的Session中放置一個不可序列化的對象在控制台上會收到一個警告。
6、開兩個瀏覽器窗口訪問應用程序會使用同一個Session還是不同的Session
對Session來說是只認id不認人,因此不同的瀏覽器,不同的窗口打開方式以及不同的cookie存儲方式都會對這個問題的答案有影響。
7、如何防止用戶打開兩個瀏覽器窗口操作導致的Session混亂
這個問題與防止表單多次提交是類似的,可以通過設置客戶端的令牌來解決。就是在伺服器每次生成一個不同的id返回給客戶端,同時保存在Session里,客戶端提交表單時必須把這個id也返回伺服器,程序首先比較返回的id與保存在Session里的值是否一致,如果不一致則說明本次操作已經被提交過了。可以參看《J2EE核心模式》關於表示層模式的部分。需要注意的是對於使用javascript window.open打開的窗口,一般不設置這個id,或者使用單獨的id,以防主窗口無法操作,建議不要再window.open打開的窗口裡做修改操作,這樣就可以不用設置。
8、為什麼Session不見了
排除Session正常失效的因素之外,伺服器本身的可能性應該是微乎其微的;理論上防火牆或者代理伺服器在cookie處理上也有可能會出現問題。出現這一問題的大部分原因都是程序的錯誤,最常見的就是在一個應用程序中去訪問另外一個應用程序。
9、伺服器關掉後,當前Session會丟掉嗎
這個取決於你使用什麼樣的web伺服器以及web伺服器是如何配置的。tomcat在shutdown前默認會自動將Session保存到指定的目錄中,重新啟動是重新載入,因此tomcat重新啟動後,Session是可以繼續使用的。此外,你還何以將Session保存到資料庫中,這個要在 server.xml中配置。
10、Cookie的過期和Session的超時有什麼區別
會話的超時由伺服器來維護,它不同於Cookie的失效日期。首先,會話一般基於駐留內存的cookie不是持續性的cookie,因而也就沒有截至日期。即使截取到JSESSION cookie,並為它設定一個失效日期發送出去。瀏覽器會話和伺服器會話也會截然不同。
『陸』 web 中的session是什麼
Session直接翻譯成中文比較困難,一般都譯成時域。在計算機專業術語中,Session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。
具體到Web中的Session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間。因此從上述的定義中我們可以看到,Session實際上是一個特定的時間概念。
需要注意的是,一個Session的概念需要包括特定的客戶端,特定的伺服器端以及不中斷的操作時間。A用戶和C伺服器建立連接時所處的Session同B用戶和C伺服器中建立連接時所處的Sessions是兩個不同的Session。
那什麼是Session的解決方案呢?我們知道,用戶訪問一個網站時往往需要瀏覽許多網頁。對於一個通過PHP構築的網站來說,用戶在訪問的過程中需要執行許多的PHP腳本。然而由於HTTP協議自身的特點,用戶每執行一個PHP腳本都需要和Web伺服器重新建立連接。
又由於無狀態記憶的特點,此次連接無法得到上次連接的狀態。這樣,用戶在一個PHP腳本中對一個變數進行了賦值操作,而在另外一個PHP腳本中卻無法得到這個變數的值。例如,用戶在負責登錄的PHP腳本中設置了$user="wind",卻無法在另一個PHP腳本中通過調用$user來獲得「wind」這個值。也就是說,在PHP中無法設置全局變數。每個PHP腳本中所定義的變數都是只在這個腳本內有效的局部變數。
Session解決方案,就是要提供在PHP腳本中定義全局變數的方法,使得這個全局變數在同一個Session中對於所有的PHP腳本都有效。上面我們提到了,Session不是一個簡單的時間概念,一個Session中還包括了特定的用戶和伺服器。因此更詳細地講,在一個Session定義的全局變數的作用范圍,是指這個Session所對應的用戶所訪問的所有PHP。
例如A用戶通過Session定義了一個全局變數$user=「wind」中,而B用戶通過Session定義的全局變數$user=「jane」。那麼在A用戶所訪問的PHP腳本中,$user的值就是wind。
在ASP 和 ASP.NET 中
Session 是 用於保持狀態的基於 Web 伺服器的方法。Session 允許通過將對象存儲在 Web 伺服器的內存中在整個用戶會話過程中保持任何對象。
Session 通常用於執行以下操作:
存儲需要在整個用戶會話過程中保持其狀態的信息,例如登錄信息或用戶瀏覽 Web 應用程序時需要的其它信息。
存儲只需要在頁重新載入過程中或按功能分組的一組頁之間保持其狀態的對象。
Session 的作用就是它在 Web 伺服器上保持用戶的狀態信息供在任何時間從任何頁訪問。因為瀏覽器不需要存儲任何這種信息,所以可以使用任何瀏覽器,即使是像 PDA 或手機這樣的瀏覽器設備。
此持久性方法的限制
隨著越來越多用戶登錄,Session 所需要的伺服器內存量也會不斷增加。
訪問 Web 應用程序的每個用戶都生成一個單獨的 Session 對象。每個 Session 對象的持續時間是用戶訪問的時間加上不活動的時間。
如果每個 Session 中保持許多對象,並且許多用戶同時使用 Web 應用程序(創建許多 Session),則用於 Session 持久性的伺服器內存量可能會很大,從而影響了可伸縮性。
『柒』 web服務cookies和session的區別
1,session 在伺服器端,cookie 在客戶端(瀏覽器)
2,session 默認被存在在伺服器的一個文件里(不是內存)
3,session 的運行依賴 session id,而 session id 是存在 cookie 中的,也就是說,如果瀏覽器禁用了 cookie ,同時 session 也會失效(但是可以通過其它方式實現,比如在 url 中傳遞 session_id)
4,session 可以放在 文件、資料庫、或內存中都可以。
5,用戶驗證這種場合一般會用 session
因此,維持一個會話的核心就是客戶端的唯一標識,即 session id
『捌』 如何理解session在Web項目中的作用
我覺得關鍵還是理解session的概念,區別於request,application兩個作用域。
1)你可以用session來區別不同的用戶。代碼session.getAttribute("username"),獲得的用戶名稱是不同的。
2)你可以用session來保存上一次http request請求的值,比如類似購物車的網站。
3)你可以用session來提高性能,不需要重復的去資料庫中取。
『玖』 web應用中session的壽命問題
配置文件設的,有:
<cache-policy-conf>
<min-capacity>50</min-capacity>
<max-capacity>1000000</max-capacity>
<overager-period>300</overager-period>
<max-bean-age>600</max-bean-age>
<resizer-period>400</resizer-period>
<max-cache-miss-period>60</max-cache-miss-period>
<min-cache-miss-period>1</min-cache-miss-period>
<cache-load-factor>0.75</cache-load-factor>
</cache-policy-conf>Top
關於有狀態會話BEAN的生命周期很特別,描述如下:
1:不存在狀態---(client調用create())(容器調用Class.newInstance(),setSessionContext (),ejbCreate())--->進入方法就緒狀態(此時可以為client服務)--->如果超時則容器將其銷毀,回到不存在狀態。
--->如果伺服器要節省資源或遇到新事務開啟,則釋放資源,實例打回到不存在狀態。序列化實例欄位。(容器調用ejbPassivate()掛起)
--->事務等結束,重新找會資源,反序列化實例欄位。建立一個新的BEAN實例(容器調用ejbActivate()激活)
--->容器調用ejbRemove()或客戶顯示調用remove()也會將BEAN打回到不存在狀態。BEAN生命周期結束。
所以,雖然客戶沒有顯示調用remove(),但發生以情況都會將bean回收。
『拾』 在java web應用中 session是什麼時候創建的
在你需要進行會話跟蹤的時候創建。
一般都是在輸入賬戶、密碼之後點擊登陸,跳轉之後就已經生成session了。