什么是cookie与session
cookie
在web应用中,当用户通过浏览器访问web服务器时,服务器会给客户发送一些请求,这些请求信息都保存在Cookie中。这样,当浏览器再次访问服务器时,都会在请求头中将cookie包含在其中一同发给服务器方便服务器再次响应。
session
当浏览器访问web服务器时,servlet容器就会创建一个session对象和ID属性,其中,session对象就是客户的数据,而ID就是用来查找客户session的唯一值。session对象存放在服务器端,ID通过cookie的方式发送到客户端中。当客户端中的session没有过去时,再次访问此网站时,会在请求头中以cookie的形式发送sessionID从而服务器通过该sessionID识别客户,调取相应的session
cookie API
方法声明 | 功能描述 |
---|---|
String getName() | 用于返回Cookie的名称 |
void setValue(String newValue) | 用于为Cookie设置一个新的值 |
String getValue() | 用户返回cookie的值 |
void setMaxAge(int expiry) | 用于设置Cookie在浏览器客户机上保存有效的秒数 |
int getMaxAge() | 用户返回cookie在浏览器客户机上保存有效的秒数 |
void setPath(String url) | 用于设置该cookie项的有效目录路径 |
String getPath() | 用于返回该Cookie项的有效目录路径 |
void setDomain() | 用于设置该cooki的有效域(访问域名) |
String getDomain() | 用于返回该cookie的有效域 |
void setVersion(int v) | 用于设置该cookie采用的版本协议 |
int getVersion() | 用于返回该cookie采用的版本协议 |
void setComment(String purpose) | 用于设置该cookie项的注解部分 |
String getComment() | 用于返回该cookie项的注解部分 |
void setSecure(boolean flag) | 用于设置该cookie项是否只能使用安全的协议传送 |
boolean getSecure() | 用于返回该cookie项是否只能使用安全的协议传送 |
显示用户上一次访问时间
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String lasttime = null;
Cookie[] cookie = request.getCookies();
for (int i = 0; cookie!=null&&i < cookie.length; i++) {
if ("lasttime".equals(cookie[i].getName())) {
lasttime = cookie[i].getValue();
break;
}
}
if (lasttime == null) {
out.print("您是第一次访问本网站");
}else {
out.println("您上次访问的时间是:"+lasttime);
}
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Cookie cookie1 = new Cookie("lasttime", time);
response.addCookie(cookie1);
}
session API
方法声明 | 功能描述 |
---|---|
String getId() | 用于返回与当前HttpSession对象关联的会话标识号 |
long getCreationTime() | 返回Session创建的时间,这个时间是创建Session的时间与1970年1月1日0:0:0之间时间差表示形式 |
long getLastAccessedTime() | 返回客户端最后一次发送与session相关请求的时间,这个时间是发送请求的时间与1970年1月1日00:00:00之间时间差表示形式 |
void setMaxlnactiveInterval(int interval) | 用于设置当前HttpSession对象可空闲的以秒为单位的最长时间,也就是修改当前会话的默认超时间隔 |
boolean isNew() | 判断当前HttpSession对象是否是新创建的 |
void invalidate() | 用于强制使Session对象无效 |
ServletContext getServletContext() | 用于返回当前HTTPSession对象所属的web应用程序对象,即代表当前web应用程序的servletcontext对象 |
void setAttribute(String name,Object value) | 用于将一个对象与一个名称关联后存储到当前的HttpSession对象中 |
String getAttribute() | 用于从当前HttpSession对象中返回指定名称的属性对象 |
void removeAttribute(String name) | 用于从当前HttpSession对象中删除指定名称的属性 |
Session超时管理
<!-- 设置session的默认超时时间 -->
<!-- 当tomcat中的这个sessionID超过30分钟未使用则删除这个sessionID -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>