• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            jspsession(jspsession實現購物車)

            更新時間:2023-03-02 10:17:32 閱讀: 評論:0

            點擊關注,快速進階高級架構師

            作者:Zender

            一、會話的概念

            會話可簡單理解為:用戶開一個瀏覽器,點擊多個超鏈接,訪問服務器多個web資源,然后關閉瀏覽器,整個過程稱之為一個會話。

            二、會話過程中要解決的一些問題

            每個用戶在使用瀏覽器與服務器進行會話的過程中,不可避免各自會產生一些數據,程序要想辦法為每個用戶保存這些數據。

            三、保存會話數據的兩種技術

            1、Cookie

            Cookie意為"甜餅",是由W3C組織提出,最早由Netscape社區發展的一種機制。目前Cookie已經成為標準,所有的主流瀏覽器如IE、Netscape、Firefox、Opera等都支持Cookie。

            由于HTTP是一種無狀態的協議,服務器單從網絡連接上無從知道客戶身份。怎么辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。

            Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用respon向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。

            2、Session

            Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個其獨享的ssion對象,由于ssion為用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的ssion中,當用戶再去訪問服務器中的其它web資源時,其它web資源再從用戶各自的ssion中取出數據為用戶服務。

            四、Cookie類的主要方法

            respon接口也中定義了一個addCookie方法,它用于在其響應頭中增加一個相應的Set-Cookie頭字段。 同樣,request接口中也定義了一個getCookies方法,它用于獲取客戶端提交的Cookie。

            五、Cookie使用

            1、使用cookie記錄用戶上一次訪問的時間

            第一次訪問時,如下所示:

            再次訪問:

            2、刪除Cookie

            3、cookie中存/取中文

            結果如下:

            Cookie注意細節

            1,一個Cookie只能標識一種信息,它至少含有一個標識該信息的名稱(NAME)和設置值(VALUE)。

            2,一個WEB站點可以給一個WEB瀏覽器發送多個Cookie,一個WEB瀏覽器也可以存儲多個WEB站點提供的Cookie。

            3,瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB。

            4,如果創建了一個cookie,并將他發送到瀏覽器,默認情況下它是一個會話級別的cookie(即存儲在瀏覽器的內存中),用戶退出瀏覽器之后即被刪除。若希望瀏覽器將該cookie存儲在磁盤上,則需要使用maxAge,并給出一個以秒為單位的時間。將最大時效設為0則是命令瀏覽器刪除該cookie。

            六、Session簡單介紹

            在WEB開發中,服務器可以為每個用戶瀏覽器創建一個會話對象(ssion對象),注意:一個瀏覽器獨占一個ssion對象(默認情況下)。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的ssion中,當用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的ssion中取出該用戶的數據,為用戶服務。

            Session和Cookie的主要區別

            1,Cookie是把用戶的數據寫給用戶的瀏覽器。

            2,Session技術把用戶的數據寫到用戶獨占的ssion中。

            3,Session對象由服務器創建,開發人員可以調用request對象的getSession方法得到ssion對象。

            七、Session基礎知識

            Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個其獨享的ssion對象,由于ssion為用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的ssion中,當用戶再去訪問服務器中的其它web資源時,其它web資源再從用戶各自的ssion中取出數據為用戶服務。

            當用戶打開瀏覽器,訪問某個網站操作ssion時,服務器就會在服務器的內存為該瀏覽器分配一個ssion對象,該ssion對象被這個瀏覽器獨占。

            這個ssion對象也可以看做是一個容器,ssion默認存在時間為30min,你可以修改。

            1、Session可以用來做什么

            1、網上商城中的購物車

            2、保存登錄用戶的信息

            3、將某些數據放入到Session中,供同一用戶的各個頁面使用

            4、防止用戶非法登錄到某個頁面。

            2、Session基本使用

            Servlet1:

            Servlet2:

            同一瀏覽器訪問Servlet1,再訪問Servlet2,結果如下:

            不同瀏覽器訪問Servlet1,再訪問Servlet2,結果如下:

            可以看到這時候name是null,也就是沒有從ssion對象中取出值,因為360瀏覽器并沒有運行Servlet1來創建Session對象,上面的ssion對象是Chrome瀏覽器獨占的。

            3、Session生命周期

            Session中的屬性的默認生命周期是30min,這個默認時間可以通過修改web.xml文件來修改

            1,在Tomcat根目錄confweb.xml文件中修改

            <ssion-config>  <ssion-timeout>30</ssion-timeout></ssion-config>

            2,如果只需要對某一個web應用設置,則只需要修改對應web應用的web.xml文件。在這個web.xml文件中添加如上的代碼:

            <ssion-config>  <ssion-timeout>10</ssion-timeout></ssion-config>

            除了設置默認生命周期之外,最重要的是在程序中設置,調用tMaxInacttiveInterval(int interval),這里的interval是以秒為單位的,而且這個方法設置的是發呆時間,比如你設置的是60秒,那么在這60秒之內如果你沒有操作過ssion,它就會自動刪除,如果你操作過,不管是設置屬性還是讀取屬性,它都會從頭開始計時。

            ssion.tMaxInactiveInterval(60);八、Session實現原理

            服務器是如何實現一個ssion為一個用戶瀏覽器服務的?

            1,瀏覽器A先訪問Servlet1,這時候它創建了一個Session,ID號為110,然后Servlet1將這個ID號以Cookie的方式返回給瀏覽器A。

            2,瀏覽器A繼續訪問Servlet2,那么這個請求會帶上Cookie值: JSESSIONID=110,然后服務器根據瀏覽器A傳遞過來的ID號找到內存中的這個Session。

            3,瀏覽器B來訪問Servlet1了,它的請求并沒有帶上 JSESSIONID這個Cookie值,由于它也要使用Session,所以服務器會新創建一個Session,ID號為111。

            4,瀏覽器B繼續訪問Servlet2,那么這個請求會帶上Cookie值: JSESSIONID=111,然后服務器根據瀏覽器B傳遞過來的ID號找到內存中的這個Session。

            例如:

            Servlet1:

            Servlet2:

            第一次訪問Servlet1時,服務器會創建一個新的sion,并且把ssion的Id以cookie的形式發送給客戶端瀏覽器,如下圖所示:

            可以看到,Request Headers中并沒有Cookie的信息,而Respon Headers中有這么一句話:

            Set-Cookie:JSESSIONID=05A94199DDC64311563740CC2C78D656; Path=/CookieAndSession/; HttpOnly

            說明這個時候服務器向客戶端通過Cookie傳遞回了 JSESSIONID這個屬性。

            然后訪問Servlet2,如下圖所示:

            可以看到Respon Headers中沒有出現Set-Cookie這個頭,而Request Headers中帶上了Cookie這個頭:

            Cookie:JSESSIONID=05A94199DDC64311563740CC2C78D656

            而這個頭中正包含 JSESSIONID,并且它的值也就是我們之前Set-Cookie中 JSESSIONID的值。

            這就證明了我們之前圖解的Session的原理,也就是服務器能夠為不同的瀏覽器區分不同的Session的機制。

            九、Session的簡單應用

            1,用戶登錄時候驗證驗證碼

            Index.jsp:

            CodeServlet:

            Web.xml:

            這里使用了jelly-core-1.7.0.GA.jar來生成了驗證碼,具體使用方式:

            jelly-core-1.7.0.GA.jar(http://www.blogjava.net/fancydeepin/archive/2014/08/03/jelly_image.html)

            訪問http://localhost:8081/CookieAndSession/index.jsp輸入驗證碼,點擊提交:

            輸入正確驗證碼,頁面響應結果:

            輸入錯誤驗證碼,頁面響應結果:

            輸入正確驗證碼,后臺結果:

            輸入錯誤驗證碼,后臺結果:

            2,實現簡易購物車

            模擬一個數據庫:

            BuyBookServlet這個Servlet用于購買圖書:

            運行結果:

            3,防止用戶非法登錄到某個頁面

            比如我們的用戶管理系統,必須要登錄成功后才能跳轉到主頁面,而不能直接繞過登錄頁面直接到主頁面,這個應用是一個非常常見的應用。

            當在驗證用戶的控制器LoginClServlet.java驗證用戶成功后,將當前的用戶信息保存在Session對象中:

            然后在主頁面Main.java最開始的地方,取出Session中的登錄用戶信息,如果信息為空,則為非法訪問,直接跳轉到登錄頁面,并提示相關信息:

            那么這里就存在一個問題,一個網站會有很多個需要防止非法訪問的頁面,如果都是用這種方法豈不是很麻煩?

            兩種解決辦法:

            第一種:將這段驗證用戶的代碼封裝成函數,每次調用

            第二種:使用過濾器

            4,利用Session防止表單重復提交

            具體的做法:

            在服務器端生成一個唯一的隨機標識號,專業術語稱為Token(令牌),同時在當前用戶的Session域中保存這個Token。然后將Token發送到客戶端的Form表單中,在Form表單中使用隱藏域來存儲這個Token,表單提交的時候連同這個Token一起提交到服務器端,然后在服務器端判斷客戶端提交上來的Token與服務器端生成的Token是否一致,如果不一致,那就是重復提交了,此時服務器端就可以不處理重復提交的表單。如果相同則處理表單提交,處理完后清除當前用戶的Session域中存儲的標識號。

            在下列情況下,服務器程序將拒絕處理用戶提交的表單請求:

            1,存儲Session域中的Token(令牌)與表單提交的Token(令牌)不同。

            2,當前用戶的Session中不存在Token(令牌)。

            3,用戶提交的表單數據中沒有Token(令牌)。

            例如:

            創建FormTokenServlet,用于生成Token和跳轉到token.jsp頁面:

            在token.jsp中使用隱藏域來存儲Token(令牌),提交Token(令牌)到服務器:

            TokenServlet處理表單提交:

            運行結果如下:

            十、用戶禁用Cookie后的Session處理

            這里存在一種情況,假如用戶瀏覽器禁用了Cookie怎么辦?比如我把Chrome的Cookie禁用,如下:

            解決方法:URL重寫

            Servlet中的respon提供了對URL重寫的方法:

            那么URL重寫是什么意思呢?其實就是人為地把JSESSIONID附在了url的后面,比如我們修改之前寫的簡易購物車,ShowBook中所有的點擊購買超鏈接都要重寫。

            之前我們是這么寫的:

            out.println("<tr><td>"+book.getName()+"</td><td><a href='"+ req.getContextPath() +"/BuyBookServlet.html?id="+book.getId()+"'>點擊購買</a></td></tr>");

            現在進行URL重寫:

            req.getSession();String url = "/MyCart/BuyBookCl?id="+book.getId();url = resp.encodeURL(url);out.println("<tr><td>"+book.getName()+"</td><td><a href='"+url+"'>點擊購買</a></td></tr>");

            需要注意的是,重寫之前一定要調用或者確保使用過request.getSession()這個方法。

            重寫之前,訪問ShowBookServlet的源代碼是這樣的:

            重寫之后呢:

            可以看到URL重寫之后,jssionid這個參數自動附在了url后面,由此,得以確保我們的Session在Cookie被禁用的情況下繼續正常使用。這時候我們查看購物車的地址欄如下,可以明顯看到jssionid這個參數:

            原文:https://www.cnblogs.com/Zender/p/7657516.html

            本文發布于:2023-02-28 21:05:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167772345298626.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:jspsession(jspsession實現購物車).doc

            本文 PDF 下載地址:jspsession(jspsession實現購物車).pdf

            標簽:購物車   jspsession
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国内精品伊人久久久久AV一坑| 久久99热只有频精品8| 国产人妖cd在线看网站| 久久碰国产一区二区三区| 99久久国产综合精品成人影院| 18+内射| 国偷自产一区二区三区在线视频 | 久久婷婷五月综合97色直播| 免费AV片在线观看网址| 蜜桃视频中文在线观看| 色狠狠色婷婷丁香五月| 狠狠色噜噜狠狠狠狠888奇米| 黄色亚洲一区二区三区四区| 国产一区二区三区不卡视频| www亚洲精品| 熟妇女人妻丰满少妇中文字幕 | 国产成人啪精品视频免费网| 中文字幕第一区| 日本不卡片一区二区三区| 国产成人福利在线视老湿机| 国产综合精品91老熟女| 欧美在线观看www| 久久人人爽爽人人爽人人片av| 综合偷自拍亚洲乱中文字幕| 北岛玲中文字幕人妻系列| 色一乱一伦一图一区二区精品| 又色又无遮挡裸体美女网站黄 | 亚洲天堂一区二区三区四区| 无码伊人久久大杳蕉中文无码 | 国产精品成人一区二区三区| 国产自在自线午夜精品| 国产无遮挡免费视频免费| 久久国产免费观看精品3| 国产精品视频白浆免费视频| 日本一本正道综合久久dvd| 婷婷四虎东京热无码群交双飞视频| 国产一精品一av一免费| 国产成人精品手机在线观看| 久久精品这里热有精品| 免费播放岛国影片av| 成人午夜福利免费专区无码|