簡體   English   中英

如何獲取在javascript中創建的cookie的java值?

[英]how to get in java value of a cookie that was created in javascript?

我在javascript中創建了一個cookie,但是當我嘗試在java中獲取值時,卻得到了以前的值-cookie沒有刷新。 有什么方法可以刷新Cookie,以便獲得正確的值? 那是javascript:

<script>
    function setCookie(name,value,days) { 
         if (days) {    
            var date = new Date();     
            date.setTime(date.getTime()+(days*24*60*60*1000));   
            var expires = "; expires="+date.toGMTString();
         }   
          else  {
          var expires = "";
          }
          document.cookie = name+"="+value+expires+"; path=/";
          alert (value);
    }
    function getCookie(c_name)
        {
        var i,x,y,ARRcookies=document.cookie.split(";");
        for (i=0;i<ARRcookies.length;i++)
          {
          x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
          y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
          x=x.replace(/^\s+|\s+$/g,"");
          if (x==c_name)
            {
            return unescape(y);
            }
          }
    }
    function del_cookie(name) {
    document.cookie = name +
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
    }

  $j(document).ready(function(){
      // remove all click-events from header_nav_submenu 
        $j(".header_nav_submenu").unbind('click');  
        $j(".header_nav_submenu").click(function(){
        var goHref = $j(this).attr('href'); 
        del_cookie("last_page_nav");
        alert(getCookie("last_page_nav"));
        setCookie("last_page_nav", goHref.substring(7), 7); 
        alert(getCookie("last_page_nav"));
    });
});
</script>

這就是我嘗試從Java Cookie中獲取值的方法:

if(FriendlyURLUtil.getFriendlyURL(request.getServerName())==null){
            Cookie[] cookies =  ((HttpServletRequest) request).getCookies();
            for(int i = 0; i < cookies.length; i++) { 
                if (cookies[i].getName().equals("last_page_nav")) {
                    System.out.println("The days " + cookies[i].getMaxAge());
                    System.out.println("The cookie says " + cookies[i].getValue());
                    ((HttpServletResponse) response).sendRedirect(cookies[i].getValue());
                }
            } 

        }

您的Cookie在格林威治標准時間01-Jan-70 00:00:01(即70 AC)的1月1日(即1940年)過期。 這就是服務器端未收到它的原因。 檢查您創建失效日期的方式。

刪除舊的Cookie

document.cookie = ckName +“ =” +“; expires =星期四,70年1月1日00:00:01 GMT”;

如果(document.cookie.length> 0){c_start = document.cookie.indexOf(ckName +“ =”);

如果(c_start!= -1){c_start = c_start + ckName.length +1; c_end = document.cookie.indexOf(“;”,c_start); 如果(c_end == -1)c_end = document.cookie.length; 返回unescape(document.cookie.substring(c_start,c_end)); }
}

您可以從HttpServletRequest獲取cookie

Cookie [] cookie = request.getCookies();

如果您想要所有cookie名稱和值,請對數組進行迭代

for(int index = 0; index <cookies.length; index ++){ckName = cookies [index] .getName(); ckValue = Cookies [index] .getValue(); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM