0%

Struts2无法写Cookie的原因分析

在struts2项目中,希望把用户的表单输入保存在本地,而不是保存在数据库上,于是想到了cookie。 在action中可以这样写:

1
2
3
Cookie cookie=new Cookie("myCookie","cookieContent"); 
cookie.setMaxAge(3600*24);//过期时间为一天
ServletActionContext.getResponse.addCookie(cookie);

但是始终不能保存到客户端的硬盘上,刚开始的时候以为cookie的读写操作只能写在jsp页面中,或者只能通过javascript来操作, 后来发现不是这么回事。 关键的原因在于cookie是有大小限制的,如果想写入的内容超过了4KB,写操作便不能完成。

Microsoft Internet Explorer 符合以下的 RFC 2109 推荐最小限制:

  • 至少 300 的 cookie
  • 至少每 cookie (如构成 cookie 非终端设置 Cookie 标头的语法描述中的字符的大小为单位) 的 4096 字节
  • 至少 20 cookie,每个唯一的主机或域名