Cookie和Session都是由Tomcat自動創建的對象,Cookie的默認最大存活時間是 -1 ,即當瀏覽器關閉時Cookie就消失了;Session的默認最大存活時間是30分鍾。
使用Session進行會話保持時,服務器會將“JSESSIONID”打包成一個Cookie發給瀏覽器,由於Cookie的默認存活時間問題,一旦瀏覽器關閉,會話將會斷開,為解決這一問題,可以使用 request.setMaxAge()方法為Cookie設置最大存活時間。
但實際效果:毫無作用!
原因:瀏覽器每次請求服務器時,請求頭內的Cookie實際上已經不是同一個了,它只是擁有和上一次Cookie一樣的name和value的另一個Cookie,所以setMaxAge()方法根本不起作用(對象都不是同一個了)。
解決方案:由程序員自己手動創建一個Cookie對象,用於存儲JSESSIONID數據,並設置存活時間(大於Session的存活時間)即可。