JavaEE实例:利用Cookie制作记录访问时间功能
Cookie是由服务器产生,通过请求头读取、响应头保存在浏览器目录的键值对,用于在多次访问之间建立联系。
首先需要建一个CookieServlet类,继承HttpServlet类
public class CookieServlet extends HttpServlet
重写doGet方法,来处理Get请求
首先需要一个日期格式化工具,来将当前系统时间按需转为字符串:
SimpleDateFormat sdf = new SimpleDateFormat("yy年MM月dd日HH点mm分ss秒");
创建Cookie对象,第一个参数为键名,第2个参数是当前系统时间
Cookie ck = new Cookie("LastVisit",sdf.format(new Date()));
设置Cookie的有效时间,参数是int类型的,代表Cookie会在客户端保存多少秒。
如果是负数,代表Cookie在客户端内存中保存。
如果是0,代表浏览器关闭就失效。
如果是正数,代表多少秒后删除,这里为了模拟永久保存的效果,我们把它设为int类型的最大值(这个数换算成年大概是68年)
ck.setMaxAge(2147483647);
将Cookie加到响应头中
resp.addCookie(ck);
定义一个由初始值的字符串变量,用于保存要想浏览器输出的结果
String lastVisit = "这是您第一次访问本站";
获取请求头中的所有Cookie(这里假设没有其他Cookie)
Cookie[] cks = req.getCookies();
遍历得到的Cookie数组,找到LastVisit键名的值
if(cks!=null) { for(Cookie ck1 :cks) { if(ck1.getName().equals("LastVisit")) { lastVisit = ck1.getValue(); } } }
获得流对象,并向浏览器输出结果(这里注意一定要在获得流之前设置编码方式,否则会出现乱码)
resp.setContentType("text/html;charset = utf-8");
PrintWriter pw = resp.getWriter();
if(cks!=null) {
pw.println("上次访问时间:");
}
pw.println(lastVisit);
配置web.xml文件,将上面写好的Servlet的虚拟路径设为cs
<servlet> <servlet-name>cs</servlet-name> <servlet-class>com.MyWeb.demo01.CookieServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cs</servlet-name> <url-pattern>/cs</url-pattern> </servlet-mapping>
启动服务器,地址栏输入localhost:8080/项目名称/cs
第一次访问该资源时,由于请求头中没有对应的Cookie,所以会显示“第一次访问”

第二次访问时,就会显示上一次访问的时间

通过开发人员工具的网络选项卡可以看到请求和响应的详细信息


浙公网安备 33010602011771号