无法检索应用程序添加的cookie

时间:2012-02-01 13:09:42

标签: jsp cookies

我有一个jsp页面Index.jsp,它接受一个唯一的unicode字符串作为参数,并将表单提交给Result.jsp。我需要维护用户输入的字符串的cookie每次用户输入新的字符串时,cookie值都会被更改我已经知道了以下代码

在Index.jsp中,我创建了Cookie

<%
        Cookie ck= new Cookie("DNString",";");
        response.addCookie(ck);
%> 

在servlet中我试图管理并设置每个提交者提交表单的cookie值

private void fnSetCookieValues(HttpServletRequest request,HttpServletResponse response) 
    {

        Cookie[] cookies=request.getCookies();
        for (int i = 0; i < cookies.length; i++) {

            System.out.println(""+cookies.length+"Name"+cookies[i].getName());
            if(cookies[i].getName().equals("DNString"))
            {   
                System.out.println("Inside if:: "+cookies[i].getValue()+""+cookies.length);
                cookies[i].setValue(request.getParameter("txtIIDN"));
            }
        }

    }

但问题是虽然getCookie()它不会将DNString作为cookie但只显示 1NameJSESSIONID 为System.out.println(“”+ cookies.length +“Name”+ cookies [ I] .getName());声明输出

但是在浏览浏览器之类的

enter image description here 它将DNString显示为存储的cookie

任何人都可以找出问题和可能的解决方案。

由于

1 个答案:

答案 0 :(得分:1)

问题可能是因为;是cookie参数的分隔符。

第一次添加的值";"将转到具有响应标头的客户端,如下所示:

HTTP/1.1 200 OK
Server: tomcat
Set-Cookie: DNSString=;;JSESSIONID=some-id-value
...
...

客户端在下一个请求中发回cookie,如下所示:

GET /someurl Http/1.1
Host: server.com
Cookie: DNSString=;;JSESSIONID=some-id-value

我认为解析失败的地方因为值本身是分隔符。