cookie的运行过程
1.服务器端向客户端写一个cookie
2.客户端在访问服务器端的时候,服务器端向客户端写入cookie,方法:response.sendCookie(Cookie cookie)
3.客户端接收到cookie后存于浏览器缓存中
4.当客户端再次访问服务器时,cookie将作为一个请求发送到服务器端
5.服务器端接受cookie请求
注意事项:
1.cookie的路径问题
在访问服务器资源时,如果创建了cookie,且不设置携带路径,那么该cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息
所以在创建cookie时,可以为cookie设置携带该cookie的路径
方法:cookie.setPath(“要携带该cookie的资源路径”),此方法表示只在访问该路径下的资源时才会携带cookie
cookie.setPath("/")表示在访问该服务器下的所有的资源时都会携带该cookie
cookie.setPath("/WEB16")表示在访问WEB16这个应用工程时都会携带cookie
2.cookie的持久化问题
当然cookie也可以存在更长的时间,上述为会话级别的cookie,当浏览器关闭后cookie信息就会销毁
可以将cookie进行持久化,存储于客户端的硬盘文件中,通过cookie.setMaxAge(int seconds)方法进行持久化,
cookie信息则会在硬盘上保存seconds秒
3.删除一个cookie
如果要删除一个cookie,则需要设置一个相同的名字的cookie,并且与要删除的cookie的Path相同,
将这个cookie的时间设置为0,最后response.addCookie(cookie),即删除原来的cookie
下面用cookie返回上一次访问时间:
package lastLoginTime;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class lastLoginTime
*/
public class lastLoginTime extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public lastLoginTime() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//显示用户上一次登陆的时间
//1.客户端先访问服务器,该servlet记住这次访问的时间
Date date = new Date();
String datetime = date.toString();
//2.将当前时间以cookie的形式写给客户端
Cookie lastTime = new Cookie("lastTime",datetime);
response.addCookie(lastTime);
//3.获取客户端这个携带名字叫lastTime的这个cookie,并获得时间,显示给用户
//获取客户端cookie信息的数组
Cookie[] cookies = request.getCookies();
if(cookies!=null)
{
for(Cookie cookie : cookies)
{
String cookieName = cookie.getName();
if(cookieName.equals("lastTime"))
{
String lasttime = cookie.getValue();
response.getWriter().write(lasttime);
}
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
session的用法:
session技术 session也是域对象,作用范围在一次会话当中,
session技术是将数据存储在服务器端的技术,会为每个客户端创建一块内存空间存储客户数据
session 技术是基于cookie的,cookie技术会帮助我们存储session编号-----JESSIONID(唯一性标识)
怎样创建专属于一个客户端的session区域?request.getSession();
怎样向session区域中存取数据?
session对象的生命周期
第一次执行request.getSession()时创建
销毁:服务器关闭时销毁
session过期或者失效,默认30分钟,可通过Tomcat文件夹下Conf下web.xml配置
从何时开始计时这30分钟?
从不操作服务器的资源开始计时,默认从客户端的最后一次操作开始计时