session和cookie分别是服务器和客户端存储的技术,与java的session和cookie与php的是一样的,毕竟他们的实现不是依靠哪一种语言的
1、创建一个cookie并且写入name和value
Cookie ck = new Cookie("lastAccessTime", "");
ck.setPath("/");//要设置被删除Cookie的path,否则可能会删错对象,path表示cookie的作用范围个人理解
ck.setMaxAge(0);//0相当于删除,大于0表示存活的时长
2、通过response的方法addCookie()添加Cookie对象
response.addCookie(ck);//将ck写回客户端缓存
3、获取cookie
Cookie[] cookies = request.getCookies();//获取客户端的所有Cookie对象
for (int i = 0;cookies!=null && i < cookies.length; i++) {
if("lastAccessTime".equals(cookies[i].getName())){//判断当前Cookie中的name是否是想要的cookie
long l = Long.parseLong(cookies[i].getValue());//如果是想要的Cookie,则把Cookie中的value取出
out.write("你的最后访问时间为:"+new Date(l).toLocaleString());//yyyy-MM-dd
}
}
session是存在服务器的,可以存储对象,前提是这个对象需要可序列化。这是为了将session存盘,保证当服务器死掉的时候存储的session不会丢失。
1、获取一个session
//通过request对象获取一个session对象
HttpSession session = request.getSession();
session.setAttribute("name","杨林");//想session对象中填写数据,name唯一
System.out.println(session.getId());//获取session的id,这个id是唯一的是存储在cookie当中的
2、获取session的值
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
3、session死亡时是关闭浏览器或者设置一个最大的存活时间
session.setMaxInactiveInterval(60*5);//最大存活5分钟
当时间到时其实跟退出登录删除session信息一样的,调用session.invalidate();
方法
4、session也可以在配置文件web.xml当中设置最大时间
<session-config>
<session-timeout>5</session-timeout>
</session-config>
5、session是依赖于cookie的session的id就存在cookie当中,当用户禁用cookie的无法存入session此时需要在servlet当中写入request.getSession();
并且在设置url的时候需要使用方法response.encodeURL(url)
来支持session。如此一来session就会自动的添加到url的后面