一、Cookie复习
1.Cookie作用
Cookie是在服务器端的小段数据,一般是键值对的形式,是服务器通知浏览器(客户端)的一种技术。
2.Cookie的常用操作
①创建Cookie
直接使用 new 方法即可创建对象:
//创建Cookie对象
Cookie cookie = new Cookie("key1", "value1");
//将Cookie对象添加到响应里面
resp.addCookie(cookie);
②在服务器端获取Cookie
//获取Cookie数组
Cookie[] cookies = rep.getCookies();
//获取特定的Cookie
for (Cookie cookie : cookies) {
if("key1".equalsIgnoreCase(cookie.getName())){
try {
resp.getWriter().write("获取到Cookie,Name:" + cookie.getName() + " Value:" + cookie.getValue());
} catch (IOException e) {
e.printStackTrace();
}
}
}
③修改Cookie的值
//方案一
Cookie cookie = new Cookie("key1", "newValue1");
resp.addCookie(cookie);
resp.getWriter().write("方案一修改完成");
//方案二
Cookie[] cookies = rep.getCookies();
for (Cookie cookie : cookies) {
if("key1".equalsIgnoreCase(cookie.getName())){
cookie.setValue("newValue2");
resp.addCookie(cookie);
break;
}
}
④Cookie的生命周期
第一步,获取默认生命周期: 结果为-1;
Cookie cookie = new Cookie("key2", "value2");
int maxAge = cookie.getMaxAge();
第二步,设置声明周期:单位为秒
Cookie cookie = new Cookie("key3", "value3");
cookie.setMaxAge(60 * 60);
其中:
负数表示把生命周期设置为当前会话,
0表示立刻删除该Cookie,
整数表示生命周期为相应的秒数。
⑤Cookie的路径设置
Cookie的路径设置是用来控制Cookie在请求中发送的,例如:
CookieA的Path为 http://ip:port/工程路径,CookieB的Path为http://ip:port/工程路径/abc.
那么当访问页面 http://ip:port/工程路径/x.html 时,CookieA将会在请求头中而CookieB则不会被发送,
访问页面 http://ip:port/工程路径/abc/x.html 时,CookieB将会在请求头中同时CookieA也会在请求头中。
设置代码如下:
Cookie cookie = new Cookie("key4", "value4");
cookie.setPath("");
二、Session复习
1.Session作用
Session是一种用来维护客户端和服务端之间关联的一种技术,经常用来保存用户登录后的信息。
2.Session的常用操作
①Session的创建
Session的创建只用一个API即 req.getSession() ,该API在第一次使用时创建Session对象,后面就不再创建Session对象,而是获取之前创建好的Session对象。
如何判断使用了 req.getSession()方法后获取到的Session对象是新的还是旧的,可以使用 isNew() 方法来判断,也可以根据Session的id来判断。
HttpSession session = rep.getSession();
resp.getWriter().write("获取到了Session<br/>");
resp.getWriter().write("Session的id号为:" + session.getId() + "<br/>");
resp.getWriter().write("Session是否为新创建的:" + session.isNew() + "<br/>");
②Session设置和获取参数
HttpSession session = rep.getSession();
session.setAttribute("keySession", "valueSession");
resp.getWriter().write("设置的参数为:" + session.getAttribute("keySession"))
③Session生命周期
Session使用 public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位),而这里知道超时时间是指不激活session的情况下的时间。
Session设置默认生命周期:
Session的默认生命周期没有相关的API来进行设置,需要在web.xml文件中配置相关的默认超时时间,tomcat默认的超时时间为30分钟
Session中使用 public void setMaxInactiveInterval(int interval) 来设置个别Session的超时时间,正数表示相应的秒数,负数表示永不超时
Session中使用 public void invalidate() 让当前 Session 会话马上超时无效。