我有一个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
任何人都可以找出问题和可能的解决方案。
由于
答案 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
我认为解析失败的地方因为值本身是分隔符。