1.背景
使用Cookie和Session的背景
显示用户的上次访问时间
登录系统以后显示商品浏览记录
购买商品将商品添加到购物车
系统登录的验证码的校验
2记录用户的上一次访问时间
用户登录完成后,显示您是第X位访问的用户,您的上次访问时间是YYYY-MM-DD
*如果是第一次登录的话,只显示第X位登录。
*如果不是第一次登录的话,显示第X位登录,上次访问时间为:yyyy-mm-dd
2.1会话技术
用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程成为一次会话。
常见的会话技术:
*Cookie:将数据保存到客户端的浏览器。,
*Session:将数据保存到服务器。为什么使用会话技术?
私有的数据,购物信息数据保存在会话技术中。会话技术的使用
*向浏览器保存数据:HttpServletResponse有一个方法: void addCookie(Cookie cookie)
*获得浏览器带过来的数据:HttpServletRequest:— Cookie[] getCookie()创建一个Cookie对象
Cookie(String Name,String value)
3.JSP的简单的概述
Java Server Pages(Java服务器端界面) = Java代码+HTML的元素+JSP内置的东西
JSP执行的过程:JSP会被翻译成Servlet,编译成Class进行执行。
3.1JSP的脚本元素
<%! %> :翻译成类中的成员部分,定义变量,定义方法,定义类,Servlet是线程不安全,尽量少在类中定义成员属性。
<% %>: 翻译成类的Service方法内部的内容;定义变量,定义类,直接写一些代码块。
<%= %>:翻译成Service方法内部的out.print().
3.2代码实现记录上次访问的时间
/*
* 获得浏览器中带过来的所有的Cookie信息,从数组中查找有没有制定名称的cookie。
* 判断用户是不是第一次访问
* 如果是第一次:显示欢迎,记录当前爱访问的时间存入到Cookie中
* 如果不是第一次:显示上一次访问的时间,同时记录当前的时间并存入到Cookie中。
* */
// 获得浏览器带过来的所有的cookie信息
Cookie[] cookies = request.getCookies();
// 从数组中查找制定名称的Cookies
Cookie cookie = CookiesUtils.findCookie(cookies, "lastVisit");
// 判断是否是第一次
if (cookie == null) {
// 第一次访问
response.getWriter().println("你是第"+count+"位访客");
}else{
// 不是第一次登录
Long long1 = Long.parseLong(cookie.getValue());
Date date = new Date(long1);
response.getWriter().println("你是第"+count+"位访客"+date.toLocaleString());
}
// 创建一个Cookie对象:
Cookie cookie2 = new Cookie("lastVisit",""+System.currentTimeMillis());
// 保存到浏览器
response.addCookie(cookie2);
3.3Cookie常用的API
getName()
getValue()
setDomain(String domain) — 设置cookie的有效域名
setPath(String path) — 设置Cookie的有效路径
setMaxAge(int maxAge) — 设置cookie的有效时间
3.4Cookie的分类
会话级别的Cookie:默认的Cookie,关闭浏览器,Cookie就会销毁
持久级别的Cookie:可以设置Cookie的有效时间,Name关闭浏览器Cookie还会存在。手动销毁持久的Cookie—-setMaxAge(0)—前提是有效的路径必须一致。
4.Cookie记录用户的商品浏览记录
在登录完成后,显示商品列表页面。
为商品列表页面做一些准备工作
点击某个商品,将商品ID传递给一个Servlet
在Servlet中判断是否是第一次浏览商品
如果是第一次,将商品的ID存到Cookie中
如果不是第一次,判断商品是否已经浏览了
如果浏览过,删除之前的元素,将该元素添加到最前面
如果没有浏览过该产品,判断最大长度,没有超过显示,直接加到最前面,如果超过最大长度,删除最后一个,将其插入到最前面。