日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session

發布時間:2024/6/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cookie是HTTP協議標準下的存儲用戶信息的工具。瀏覽器把用戶信息存放到本地的文本文件里。

Session是基于Cookie實現的。


2011年4月,武漢群碩面試的時候(實習生)。面試官也問過這個問題。

當時僅僅知道Session是基于Cookie的。可是沒有想到“不使用Tomcat等Web容器的Session,僅僅使用Cookie也能夠實現自己的Session。完畢會話管理,并且據說性能更好。”



曾經的做法:

? ?使用HttpRequestSession保存用戶信息,很方便。

? ?

? ?配置一個登錄攔截器,從Session中獲得當前用戶的信息。

? ?

? ?假設須要登錄,但Session中沒實用戶信息,就強制跳轉到登錄頁。否則,正常運行。

? ?假設不須要登錄,不管Session是否實用戶信息,正常運行。

? ?

? ?優點:使用自帶的Session。編程更方便,不須要額外處理。

? ?壞處:性能不好。據說Session占居的內存會許多。

? ? ? ? ?之前做的Web項目。用戶都不大,沒有考慮過這個問題。

?

? ?為了實現“保持登錄”這個功能,要用到Cookie,須要做一下特殊處理。

? ?

? ?Tomcat的Session能夠存放到Redis中。保證server重新啟動的情況下。已經登錄的用戶仍然保持登錄。


? ?把Java的Session存到Redis。這個還沒有實現過。


創業的做法:

? ?創業做ITFriend的時候,我們是把Node.js的Session數據存到Redis中。

? ?

? ?

如今的做法:

? ?不使用HttpRequestSession,使用Cookie,在用戶端保存key。用戶信息緩存到Redis中。

每次請求來的時候,依據Cookie信息。得到key,依據緩存,推斷用戶是否登錄過。

? ?

?

? ?配置一個登錄攔截器,默認須要登錄。使用@LoginNeedless注解,就不須要登錄。不管是否登錄,都能夠把用戶的信息放到線程上下文ThreadLocal<User>中。

? ?

? ?

? 在實際過程中。發現一個問題。ThreadLocal<User>是線程局部變量,可是Tomcat的線程是“線程池” 實現的,兩個不同用戶的ThreadLocal可能是同一個,

? 因此在請求和開始的時候,清空用戶信息: LoginUtil.setCurrentUser(null);

? 防止不同用戶的數據互相干擾。

??

? 理論上的性能排序:

? Cookie+Redis >= 容器Session+Redis > 容器Session

原文首發:http://fansunion.cn/article/detail/56.html?

版權聲明:本文博主原創文章,博客,未經同意不得轉載。

轉載于:https://www.cnblogs.com/zfyouxi/p/4799019.html

總結

以上是生活随笔為你收集整理的Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。