复制 Cookie c = new Cookie ( " name " , " value " ); // 创建Cookie
c . setMaxAge ( 60 * 60 * 24 ); // 设置最大时效,此处设置的最大时效为一天
response . addCookie ( c ); // 把Cookie放入到HTTP响应中
复制 String name = " name " ;
Cookie [] cookies = request . getCookies ();
if ( cookies != null ){
for ( int i = 0 ; i < cookies . length ; i ++ ){
Cookie cookie = cookies [ i ];
if ( name . equals ( cookis . getName ()))
// something is here.
// you can get the value
cookie . getValue ();
}
} 优点: 数据可以持久保存,不需要服务器资源,简单,基于文本的Key-Value 缺点: 大小受到限制,用户可以禁用Cookie功能,由于保存在本地,有一定的安全风险。
在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。 优点: 在Cookie被禁用的时候依然可以使用 缺点: 必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。
在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建 HttpSession,每个用户可以访问他自己的HttpSession。可以通过HttpServletRequest对象的getSession方 法获得HttpSession,通过HttpSession的setAttribute方法可以将一个值放在HttpSession中,通过调用 HttpSession对象的getAttribute方法,同时传入属性名就可以获取保存在HttpSession中的对象。与上面三种方式不同的 是,HttpSession放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的Servlet容器可以在内存将满时将HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到HttpSession中的值可以是任意Java对象,这个对象最好实现了 Serializable接口,这样Servlet容器在必要的时候可以将其序列化到文件中,否则在序列化时就会出现异常。