设计一个类,使用Cookie技术实现显示用户上次访问时间的功能。
(1)创建一个LastAccessServlet类,使其继承HttpServlet类并重写该类的doGet()方法。
(2)在doGet()方法中,使用request.getCookies()得到所有cookie形成的cookie数组,并进行遍历。
(3)如果遍历过程中找到cookie信息中存在lastAccess属性则输出,否则创建cookie对象设置值为当前时间并发送给客户端。
(4)cookie的存活时间为1小时,访问当前应用中的所有资源客户端都回送cookie信息。
public class LastAccessServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/*
* 设定一个 cookie 的name : lastAccessTime 读取客户端发送cookie
* 获得用户上次的访问时间显示
*/
String lastAccessTime = null;
// 获取所有的cookie,并将这些cookie存放在数组中
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) {
if ("lastAccess".equals(cookies[i].getName())) {
// 如果cookie的名称为lastAccess,则获取该cookie的值
lastAccessTime = cookies[i].getValue();
break;
}
}
// 判断是否存在名称为lastAccess的cookie
if (lastAccessTime == null) {
response.getWriter().print("您是首次访问本站!!!");
} else {
response.getWriter().print("您上次的访问时间" + lastAccessTime);
}
// 创建cookie,将当前时间作为cookie的值发送给客户端
Cookie cookie = new Cookie("lastAccess", new Date().toLocaleString());
cookie.setMaxAge(60 * 60);// 保存1小时
// 访问chapter05下资源时回送cookie
cookie.setPath("/chapter05");
// 发送 cookie
response.addCookie(cookie);
}
}