隨筆-50  評論-55  文章-8  trackbacks-0

          今天測試設置和獲取Cookie遇到了一點小問題,很奇怪的問題;
          把J2ee服務部署在本地 8080端口;訪問任何一個服務時,如果客戶端沒有cookie,則下發cookie,
          ?如果客戶端已經有了該cookie的值就不下發,代碼邏輯如下:
          String uid="";
          Cookie mycookies[] = request.getCookies();
          ?if (mycookies!= null) {
          ??????????? for (int i = 0; i < mycookies.length; i++) {
          ??????????????? if ("uid".equalsIgnoreCase(mycookies[i].getName())) {
          ??????????????????? uid=mycookies[i].getValue();
          ??????????????? }
          ?????????????}
          ??????? }
          ?????if(!StringUtils.isNull(uid)){
          ????? //do nothing
          ? }else{
          ? String host=request.getHeader("host");
          ?uid=UUID.create();
          ?Cookie? mycookie = new Cookie("uid",uid);
          ?mycookie.setDomain(host);
          ?mycookie.setMaxAge(93312000);//三年
          ?response.addCookie(mycookie);
          }
          System.out.println("uid is>"+uid);
          1、訪問:
          ?? http://localhost:8080/
          ?? 以及內部的頁面,打印uid的值是相同的;符合要求
          2、訪問:
          ? http://127.0.0.1:8080
          ? 以及內部的頁面, uid每次都獲取得值都是不同的;
          兩者的區別僅僅的訪問的方式不同,如果用ip訪問
          ??Cookie mycookies[] = request.getCookies();中永遠獲取不到uid的值;
          80端口號除外

          查了瀏覽器的具體cookie值,發現
          http://localhost:8080/?訪問的時候,cookie值放在localhost下,服務器自動生成的SESSIONID也是存放在localhost路徑下。
          http://127.0.0.1:8080/ 訪問的時候,cookie uid值放在127.0.0.1:8080下,在127.0.0.1:8080下的cookie服務端的Servlet永遠都獲取不到;而服務器自動生成的SESSIONID則是在127.0.0.1下,與uid存放位置不同。

          所以在服務端下發cookie的時候,
          String host=request.getHeader("host");
          需要修改為
          if(host.indexOf(":")>-1){
          ??? ??host=host.split(":")[0];
          ??? ?}
          或者放棄設置mycookie.setDomain(host);
          這樣cookie值也是保存在127.0.0.1下的,與端口號不關聯
          ?當然是服務器已經有域名的就不會出現端口號下獲取不到cookie的值;

          posted on 2009-09-07 20:06 蔣家狂潮 閱讀(5239) 評論(1)  編輯  收藏 所屬分類: JWeb

          評論:
          # re: Servlet的Cookie值保存與獲取 2009-09-08 11:27 | 禮物吧
          原來如此  回復  更多評論
            
          主站蜘蛛池模板: 牙克石市| 长岛县| 洛宁县| 云阳县| 柘城县| 平顺县| 宁武县| 舟山市| 高青县| 团风县| 景德镇市| 常宁市| 青岛市| 长治市| 佛坪县| 白玉县| 青浦区| 临沧市| 普格县| 霍州市| 金秀| 丰城市| 开远市| 大丰市| 从江县| 泰来县| 静宁县| 凌云县| 深圳市| 读书| 隆尧县| 日土县| 松滋市| 西吉县| 湖州市| 定边县| 汤原县| 牡丹江市| 濮阳市| 浮山县| 安岳县|