feitian

          2011年4月23日 #

          Cookie 和session 的區(qū)別 (轉(zhuǎn)自http://www.cnblogs.com/chy8219/articles/1223533.html)

          session與cookie的區(qū)別(轉(zhuǎn)自http://www.cnblogs.com/chy8219/articles/1223533.html
          Session是由應(yīng)用服務(wù)器維持的一個(gè)服務(wù)器端的存儲(chǔ)空間,用戶在連接服務(wù)器時(shí),會(huì)由服務(wù)器生成一個(gè)唯一的SessionID,用該SessionID 為標(biāo)識(shí)符來(lái)存取服務(wù)器端的Session存儲(chǔ)空間。而SessionID這一數(shù)據(jù)則是保存到客戶端,用Cookie保存的,用戶提交頁(yè)面時(shí),會(huì)將這一 SessionID提交到服務(wù)器端,來(lái)存取Session數(shù)據(jù)。這一過(guò)程,是不用開發(fā)人員干預(yù)的。所以一旦客戶端禁用Cookie,那么Session也會(huì)失效。

          服務(wù)器也可以通過(guò)URL重寫的方式來(lái)傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則服務(wù)器可以自動(dòng)通過(guò)重寫URL的方式來(lái)保存Session的值,并且這個(gè)過(guò)程對(duì)程序員透明。

          可以試一下,即使不寫Cookie,在使用request.getCookies();取出的Cookie數(shù)組的長(zhǎng)度也是1,而這個(gè)Cookie的名字就是JSESSIONID
          ,還有一個(gè)很長(zhǎng)的二進(jìn)制的字符串,是SessionID的值。

          Cookie是客戶端的存儲(chǔ)空間,由瀏覽器來(lái)維持。

          在一些投票之類的場(chǎng)合,我們往往因?yàn)楣降脑瓌t要求每人只能投一票,在一些WEB開發(fā)中也有類似的情況,這時(shí)候我們通常會(huì)使用COOKIE來(lái)實(shí)現(xiàn),例如如下的代碼:
          < % cookie[]cookies = request.getCookies();
          if (cookies.lenght == 0 || cookies == null)
             doStuffForNewbie();
          //沒(méi)有訪問(wèn)過(guò)   
          }

          else
          {
             doStuffForReturnVisitor(); //已經(jīng)訪問(wèn)過(guò)了
          }

          % >



                 這是很淺顯易懂的道理,檢測(cè)COOKIE的存在,如果存在說(shuō)明已經(jīng)運(yùn)行過(guò)寫入COOKIE的代碼了,然而運(yùn)行以上的代碼后,無(wú)論何時(shí)結(jié)果都是執(zhí)行doStuffForReturnVisitor(),通過(guò)控制面板-Internet選項(xiàng)-設(shè)置-察看文件卻始終看不到生成的cookie文件,奇怪,代碼明明沒(méi)有問(wèn)題,不過(guò)既然有cookie,那就顯示出來(lái)看看。
          cookie[]cookies = request.getCookies();
          if (cookies.lenght == 0 || cookies == null)
             out.println("Has not visited this website");
          }

          else
          {
             for (int i = 0; i < cookie.length; i++)
             {
               out.println("cookie name:" + cookies[i].getName() + "cookie value:" +
                   cookie[i].getValue());
             }
          }


                   運(yùn)行結(jié)果:
          cookie name:JSESSIONID cookie value:KWJHUG6JJM65HS2K6

          為什么會(huì)有cookie呢,大家都知道,http是無(wú)狀態(tài)的協(xié)議,客戶每次讀取web頁(yè)面時(shí),服務(wù)器都打開新的會(huì)話,而且服務(wù)器也不會(huì)自動(dòng)維護(hù)客戶的上下文信息,那么要怎么才能實(shí)現(xiàn)網(wǎng)上商店中的購(gòu)物車呢,session就是一種保存上下文信息的機(jī)制,它是針對(duì)每一個(gè)用戶的,變量的值保存在服務(wù)器端,通過(guò)SessionID來(lái)區(qū)分不同的客戶,session是以cookie或URL重寫為基礎(chǔ)的,默認(rèn)使用cookie來(lái)實(shí)現(xiàn),系統(tǒng)會(huì)創(chuàng)造一個(gè)名為JSESSIONID的輸出cookie,我們叫做session cookie,以區(qū)別persistent cookies,也就是我們通常所說(shuō)的cookie,注意session cookie是存儲(chǔ)于瀏覽器內(nèi)存中的,并不是寫到硬盤上的,這也就是我們剛才看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但是當(dāng)我們把瀏覽器的cookie禁止后,web服務(wù)器會(huì)采用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到sessionid=KWJHUG6JJM65HS2K6之類的字符串。
                   明白了原理,我們就可以很容易的分辨出persistent cookies和session cookie的區(qū)別了,網(wǎng)上那些關(guān)于兩者安全性的討論也就一目了然了,session cookie針對(duì)某一次會(huì)話而言,會(huì)話結(jié)束session cookie也就隨著消失了,而persistent cookie只是存在于客戶端硬盤上的一段文本(通常是加密的),而且可能會(huì)遭到cookie欺騙以及針對(duì)cookie的跨站腳本攻擊,自然不如session cookie安全了。
                   通常session cookie是不能跨窗口使用的,當(dāng)你新開了一個(gè)瀏覽器窗口進(jìn)入相同頁(yè)面時(shí),系統(tǒng)會(huì)賦予你一個(gè)新的sessionid,這樣我們信息共享的目的就達(dá)不到了,此時(shí)我們可以先把sessionid保存在persistent cookie中,然后在新窗口中讀出來(lái),就可以得到上一個(gè)窗口SessionID了,這樣通過(guò)session cookie和persistent cookie的結(jié)合我們就實(shí)現(xiàn)了跨窗口的session tracking(會(huì)話跟蹤)。
                   在一些web開發(fā)的書中,往往只是簡(jiǎn)單的把Session和cookie作為兩種并列的http傳送信息的方式,session cookies位于服務(wù)器端,persistent cookie位于客戶端,可是session又是以cookie為基礎(chǔ)的,明白的兩者之間的聯(lián)系和區(qū)別,我們就不難選擇合適的技術(shù)來(lái)開發(fā)web service了。

          posted @ 2011-05-12 19:38 飛天wfu 閱讀(359) | 評(píng)論 (0)編輯 收藏

          mysql數(shù)據(jù)庫(kù)中插入中文錯(cuò)誤

          往mysql數(shù)據(jù)庫(kù)中插入中文時(shí)顯示錯(cuò)誤,是數(shù)據(jù)庫(kù)的字符集問(wèn)題。
                將mysql默認(rèn)字符集設(shè)置為utf8  ,
                然后修改mysql安裝目錄下的my.ini文件:
                       [client]下的default-character-set=gbk;
                       [mysqld]下的default-character-set=utf8;
                重啟mysql服務(wù),問(wèn)題解決!

          posted @ 2011-04-24 12:08 飛天wfu 閱讀(162) | 評(píng)論 (0)編輯 收藏

          各種排序算法java實(shí)現(xiàn) (轉(zhuǎn)自http://duketian.blog.chinajavaworld.com/entry/3852/0/)

               摘要:   1 package org.rut.util.algorithm.support;   2     3 import org.rut.util.algorithm.SortUtil;   4 /**   5 ...  閱讀全文

          posted @ 2011-04-24 12:04 飛天wfu 閱讀(215) | 評(píng)論 (0)編輯 收藏

          【轉(zhuǎn)】 myeclipse常用設(shè)置(轉(zhuǎn))

          轉(zhuǎn)載自 chssheng2007
          最終編輯 chssheng2007
          設(shè)置工作空間的項(xiàng)目編碼, 防止出現(xiàn)亂碼
             Window - Preferences - General - Workspace
             將"Text file encoding"選為"Other" - "UTF-8"
              改變現(xiàn)有項(xiàng)目的編碼的步驟: 右擊項(xiàng)目屬性, 選擇"Text file encoding"的編碼

          設(shè)置其它文件的編碼
              Window -> Preferences -> General -> Content Types
              將需要設(shè)置的文件設(shè)置編碼, 最好統(tǒng)一設(shè)為UTF-8
              設(shè)置后, 如Javascript文件可正常顯示中文

          設(shè)置創(chuàng)建JSP頁(yè)面時(shí),將JSP的默認(rèn)編碼設(shè)為UTF-8

              Window -> Preferences -> MyEclipse -> Files and Editors -> JSP
              將"Encoding"選為"ISO10646/Unicode(UTF-8)

          去掉格式化JSP時(shí)頁(yè)面中的空行
             Window -> Preferences -> MyEclipse -> HTML -> HTML Source
              勾選"Clear all blank lines"

          增強(qiáng)Eclipse的自動(dòng)代碼提示功能
              默認(rèn)下, 只有按"."或"Alt + /"才出現(xiàn)代碼提示功能, 不夠強(qiáng)大, 作小小設(shè)置, 可將代碼提示功能像VS的一樣方便
              1. Window -> Preferences -> Java -> Editor -> Content Assist
              2. 將"Auto Activation triggers for java"設(shè)置為".abc"(默認(rèn)是"."), 點(diǎn)"Apply"應(yīng)用
              3. 導(dǎo)出目前的Eclipse配置文件: File -> Export -> General -> Perferences, 選擇保存路徑, 保存得到*.epf文件
              4. 用文本編輯器打開剛才保存的*.epf文件, 搜索".abc", 將".abc"部分改為
                 ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ(," (以上為自動(dòng)提示的觸發(fā)字符,
                 根據(jù)個(gè)人習(xí)慣設(shè)置), 保存此配置文件(個(gè)人覺(jué)得不太好用,容易出錯(cuò))
              5. 導(dǎo)入此配置文件: File -> import -> General -> Perferences, 導(dǎo)入修改后的配置文件.

              第一個(gè)選項(xiàng)為反應(yīng)時(shí)間,可設(shè)為100左右(默認(rèn)200)

          高亮類中同一引用的使用位置
             Window -> Perferences -> General - > Editors -> TextEditors -> Annotations
              選擇"Occurrences",勾引"Text as" -> "Highlighted"(塊高亮)或"Squiggles"(虛線)

          Link with Editor
              打開類后, 自動(dòng)在包管理器這里顯示類的位置
            


          取消Myeclipse的自動(dòng)文件驗(yàn)證(卡傻的原因)
              Windows –> Perferences –>Myeclipse –> Validation
             保留manual(手動(dòng))部分,build下只留"classpath dependency Validator"

              手動(dòng)驗(yàn)證: 右鍵文件 -> Myeclipse -> Run Validation

          取消拼寫錯(cuò)誤檢查
              我愛故意寫錯(cuò)單詞, 不需要系統(tǒng)幫我檢查
              Windows –> perferences –> General –> Editors-> Text Editors -> Spelling
              去掉"Enable spell checking"勾選

          關(guān)閉不需要的啟動(dòng)項(xiàng)
               MyEclipse:
              Windows –> Perferences–> General–> Startup and Shutdown

              我只保留了
            
            
              順序下來(lái):
              1, Tomcat6: 必備的...
              2, 內(nèi)存監(jiān)視器: 可以查看Myeclipse的使用內(nèi)存, 我喜歡這工具(在菜單Myeclipse - Utilities - Show Heap Status打開)
              3, JSP Debug工具, 其實(shí)我也沒(méi)用過(guò), 怕有一天用到...
              4, 文件創(chuàng)建向?qū)?個(gè)人經(jīng)常用到)
              5, 向后兼容的意思吧, 怕有一天會(huì)用到, 但其實(shí)很少用, 可去掉
              6, 透視圖, 應(yīng)該可以去掉吧...

              其實(shí)就只用選擇Tomcat6

          關(guān)閉自動(dòng)更新
              1, Eclipse:
                
          Windows –> Perferences–> Install/Update -> Automatic Updates
                  不勾選"Automatically find new updates and notify me"

              2, Myeclipse:
                
          1)Windows –> Perferences–> MyEclipse... -> Community Essentials
                &nb sp; 不勾選"Search for new features at startup"
                  2)
          Windows –> Perferences–> MyEclipse... -> Maven4MyEclipse
                 不勾選"Download repository index updates on startup"

          posted @ 2011-04-23 12:05 飛天wfu 閱讀(418) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 越西县| 田林县| 孟连| 克拉玛依市| 阿拉善盟| 广饶县| 永善县| 常山县| 绿春县| 抚远县| 海南省| 巨鹿县| 湖州市| 扎鲁特旗| 四会市| 英山县| 合作市| 贡山| 新民市| 瓦房店市| 长丰县| 舞阳县| 郴州市| 罗田县| 白城市| 永安市| 浑源县| 德钦县| 府谷县| 绥宁县| 耿马| 桑植县| 乐都县| 湛江市| 甘肃省| 鄂伦春自治旗| 历史| 博野县| 新建县| 张家界市| 福贡县|