zhangsenwei

          張森煒的博客

          聯系 管理
            19 Posts :: 8 Stories :: 55 Comments :: 0 Trackbacks
          現在有很多二階段的同學,學習完了session后還是對session 的使用不是很清楚,那么我們就一起來看看這個神密的家伙吧。 
                 首先我們先來了解一下什么是session,其實session就是一塊在服務器端(如果連服務器和客戶端也分不清的話就問問帶課老師吧)開辟的內存空間。session的作用是來跟蹤用戶的操作狀態(有些同學正在郁悶中什么是跟蹤用戶操作狀態?),我們舉個例子,比如:服務器端要知道一個當前網站有多少用戶在線。我們知道一個用戶就一個客戶端,那么也就是說服務器端要知道有多少客戶端正在訪問本網站,這樣服務器端必然要跟蹤每一個客戶端的狀態,那么服務器是通過什么跟蹤的呢?又是怎么跟蹤的呢?哈哈,其實這個問題很簡單,比如張三下班后打天電腦是今天第一次訪問清華IT太原校區的網站(http://www.qinghuait.net 順便宣傳一下),張三的電腦向清華IT太原校區的網站發出了請求,清華IT太原校區網站我現在要訪問你,這時呢清華IT太原校區的網站說請出示你的證件,張三的電腦傻了問“證件???”這時清華IT太原校區的網站說是今天第一次來訪吧,張三的電腦說是啊,清華IT太原校區的網站說那就對了看在你誠實的份上給你一個證件吧(這里的證件就是我們說的sessionID,sessionID:是32位的字母和數字的組合是全地球唯一的,因為sessionID是唯一的所以它的作用是用來區分每個客戶端的,此ID是在session被創建時產生的,而session我們看到了是在第一次訪問網站時就會被建立。sessionID會隨著應答一起發到客戶端并存放到客戶端的內存中,這塊客戶端的內存就是我們經常說的cookie,下次用戶發出請求時,也會帶著sessionID發送,這樣服務器看到sessionID后到內存尋找,找到了就使用此內存中的數據,否則視為第一次訪問本網站),不過這個證件的有效期只有15分鐘,這里的有效期15分鐘,就是我們說的session過期時間,什么是session過期時間呢?是這樣的,我們想一下我們第一次訪問一個網站,這時網站會給我們分配一個sessionID,而我們只是打開了這個首頁后,出去玩了再也沒有訪問過本網站的其它頁面內容,我們是不是還在占用著網絡資源呀,占用著sessionID。那么這時怎么辦呢?其實網站服務器很聰明的它會在你從第一次訪問后就開始計算時間比如張三打開了清華IT太原校區的網站首頁這時清華IT太原校區網站的服務器就開始計時了 1秒,2秒,3秒,4秒,5秒,6秒...在2分鐘的時候張三在首頁上點擊了一條新聞,這時清華IT太原校區網站的服務器知道后將剛才記的2分鐘清空為0這時又開始了1秒,2秒,3秒,4秒,5秒,6秒...的計時,至到計時時間達到了15分鐘也就是session過期時間,這時清華IT太原校區網站服務器會認為這個用戶15分鐘都沒有訪問過我了可能己經關機出去玩了,清華IT太原校區網站服務器會將這個用戶在服務器開辟的內存空間釋放掉,那么對應內存的sessionID也就被收回了,等待新來的用戶使用,這樣我們說一個session就被銷毀了,那么到這大家應該有點感覺了吧session的范圍有多大呀,是一個客戶端,一個客戶端對應著一個session ; 而一個session能存活多長時間有兩個方面一方面是看客戶端是否在session過期時間內訪問網站,這樣可以讓session存活時間延長,另一方面是設置的session過期時間是多長。老師等一下:你前面說可以設置session過期時間?沒錯session過期時間我們可以手工設置,如果沒有設置就采取服務器默認設置的(例如這里用Tomcat可以在Tomcat/config/web.xml中找到一段如下的代碼默認為30分鐘:
              <session-config>
                  <session-timeout>30</session-timeout>
              </session-config>
          我們還可以在我們的項目中的WEB-INF/web.xml中寫入上面的這段代碼,設置session過期時間),好了知道了這些大家想一個問題:如果我們訪問了一個網站,這個網站為我們分配了一個session ,我們現在將IE瀏覽關閉掉,session會銷毀嗎?哈哈,想都不用再想了肯定不會。因為session是存放在服務器端的session的銷毀只和過期時間有關系,再者客戶端關閉怎么會影響到服務器端呢!
          這樣我們大概也就知道為什么我們在購物車的時候都用session了吧,應為一個session對應著一個客戶端。我們可以將每個用戶買的商品存放到自己對應的session中進行管理這樣,就不會出現,張三買的電視機要郝老師結賬了。
           
          好了,我們今天就先介紹這么多吧,具體的怎么使用session我們下次介紹吧。原來打字這么累呀?。。?!
          posted on 2008-06-21 08:41 張森煒 閱讀(301) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 介休市| 娱乐| 周口市| 家居| 丽江市| 四会市| 五峰| 保靖县| 田东县| 察隅县| 阿鲁科尔沁旗| 隆尧县| 吴江市| 通榆县| 石首市| 崇阳县| 余干县| 高青县| 宁晋县| 云龙县| 镇雄县| 红安县| 禹州市| 浦东新区| 杭锦后旗| 嘉兴市| 达州市| 柘荣县| 永仁县| 广宗县| 湖南省| 阜宁县| 应城市| 延安市| 嘉义市| 芜湖市| 扬州市| 怀宁县| 宝丰县| 博爱县| 华容县|