? ? ? ?大家知道控嗜,session的保存是靠cookie保存id的,但是有一些用戶的瀏覽器設(shè)置的是"禁用cookie"嫩痰,那么我們用到session的網(wǎng)站部署上去就會(huì)影響用戶訪問session嗎?很顯然不能,所以我們要在開發(fā)階段解決這種問題的發(fā)生吮龄。
? ? ? ?如果cookie被禁用的話,session的id號(hào)就不會(huì)被瀏覽器記錄咆疗,此時(shí)用戶就看不到取得session頁面中的session信息漓帚。
? ? ? ?解決方法:URL路徑重寫。
? ? ? ?詳細(xì)點(diǎn)說就是午磁,在頁面1用戶創(chuàng)建的session尝抖,并且cookie給它設(shè)定了id號(hào),在頁面2使用此session的時(shí)候迅皇,設(shè)置點(diǎn)擊超鏈接時(shí)昧辽,路徑上給一個(gè)參數(shù)帶過去(如http;//localhost:8080/day07/SessionDemo4?id=XXX)
? ? ? ? 具體實(shí)現(xiàn):
? ? ? ? //進(jìn)主頁的session會(huì)用到最后
? ? ? ? request.getSession();
? ? ? ? //這個(gè)方法會(huì)自動(dòng)的在URL上面加上session的id號(hào)(如果cookie被禁用的話,如果cookie沒有被禁用登颓,就不會(huì)加session的id號(hào))
? ? ? ? Stringurl1=response.encodeURL("/day07/SessionDemo1");
? ? ? ? Stringurl2=response.encodeURL("/day07/SessionDemo2");
? ? ? ? out.write("購買");
? ? ? ? out.write("結(jié)賬");
? ? ? ? 上面URL的效果:
? ? ? ?<a?href="/xxx/SessionDemo1;jsessionid=572FCD20D16825556EAAD9E8B1D3984D">購買</a><br/>
? ? ? ? <a href="/day07/SessionDemo2;jsessionid=572FCD20D16825556EAAD9E8B1D3984D">結(jié)賬</a>
? ? ? ? ?瀏覽器第一次訪問服務(wù)器的時(shí)候搅荞,cookie帶值,當(dāng)瀏覽器第二次訪問服務(wù)器時(shí)挺据,服務(wù)器會(huì)向?yàn)g覽器去要cookie取具,如果瀏覽器沒有禁用cookie,那么服務(wù)器就得到瀏覽器相應(yīng)的值扁耐,但是如果瀏覽器禁用了cooki會(huì)查看URL上是否帶有擁有session的id的cookie暇检。