【问题标题】:Unable to retrieve application added cookie无法检索应用程序添加的 cookie
【发布时间】:2012-02-01 13:09:42
【问题描述】:

我有一个 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());语句输出

但是通过浏览器查看

它将 DNString 显示为存储的 cookie

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

谢谢

【问题讨论】:

    标签: jsp cookies


    【解决方案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
    

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

    【讨论】:

    • 但我认为 Cookie ck= new Cookie("DNString",";"); response.addCookie(ck);已经创建了 cookie 并添加到响应对象中,该对象会将其发送到客户端
    • 是的,这是第一次。但是,您不能修改从 HttpServletRequest.getCookies() 获取的 cookie。修改此类 cookie 不会将 cookie 重新发送给客户端。客户端仍将具有旧值。
    • 对不起,但我没有得到你想要解释的内容..但我什至没有使用 HttpServletRequest.getCookies() 方法获取我的 cookie DNString,它只返回 1NameJSESSIONID 而不是 DNString
    • 你得到的 cookies.length 是多少
    • 它的 1 总是可能是 cookie JSESSIONID
    猜你喜欢
    • 2021-03-09
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多