一. 常用Cookie API介绍

1. 获取cookie

request.getCookies();  // 返回Cookie[]

2. 创建cookie

Cookie(String key, String value);  // 通过构造器创建

3. 返回cookie给用户浏览器

response.addCookie(Cookie cookie);

4. 设置cookie的有效期

cookie.setMaxAge(int sec);

1) 单位: 秒

2) 默认cookie有效期为一个会话, 存储在浏览器缓存中, 即关闭浏览器cookie被删除

3) 设置了有效期的cookie, 即使关闭了浏览器, 也不会被删除, 即存储在硬盘上, 通常是在浏览器缓存目录下

4) 将cookie的有效期设置为0时, 表示删除该cookie, 值得注意的是删除cookie时的有效路径应该与创建cookie时的有效路径一致, 否则无法删除

5. 设置cookie的有效路径

cookie.setPath(String path);

1) cookie的默认有效路径: 创建该cookie的servlet所在的servlet映射路径. 比如在CookieDemo1创建了cookie1, 而且知道CookieDemo1的映射路径是/day01/servlet/CookieDemo1 (/day01为Web工程根路径) , 那么cookie1的有效路径就是/day01/servlet/CookieDemo1

2) 删除cookie时设置的有效路径与创建cookie时设置的有效路径一致, 才能删除cookie

3) 将cookie的有效目录设置成/day01时, 则访问/day01目录下所有资源都会携带cookie. 如果将cookie的有效目录设置成/day01/resource/, 那么在访问/day01/index.jsp时就不会携带cookie过去.

6. 设置cookie域

cookie.setDomain(string domain);

1) 什么是域?

sina.com.cn是域名

www.sina.com.cn是主机名, 表示sina.com.cn域下有一台www主机

同理也可以是ftp, mail主机, ftp.sina.com.cn, 就类似我们购买好域名之后可以在域上搭建多台主机

2) 举个栗子

cookie.setDomain(".sina.com.cn");  // 以后去访问sina.com.cn域时, 都会携带这个cookie过去, 注意sina.com.cn前有个点

7. support getter/setter for name and value

二. 实现显示用户上次访问时间

程序主要分成两个部分: 获取上次访问时间的cookie部分和返回最新访问时间的cookie, 值得注意的是这两部分使用的是同一个cookie

 /**
* Created by IntelliJ IDEA.
*
* @Auther: ShaoHsiung
* @Date: 2018/8/28 08:22
* @Title: 获取用户上次访问时间并返回最新的访问时间
* @Description:
*/
public class CookieDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置浏览器编码
response.setContentType("text/html; charset=utf-8"); // 获取输出对象
Writer out = response.getWriter();
out.write("上次访问时间: "); // 获取访问时间cookie
Cookie[] cookies = request.getCookies();
for (int i = 0; cookies != null && i < cookies.length; i++) { Cookie cookie = cookies[i];
if (cookie.getName().equals("lastAccess")) {
String value = cookie.getValue();
Date date = new Date(Long.parseLong(value)); out.write(date.toLocaleString());
}
} // 设置最新的访问时间cookie
Cookie cookie = new Cookie("lastAccess", System.currentTimeMillis() + "");
// 设置cookie有效时间 单位:秒
cookie.setMaxAge(3600);
// 设置cookie有效路径
cookie.setPath(request.getContextPath());
//System.out.println(request.getContextPath());
//System.out.println(this.getServletContext().getContextPath());
response.addCookie(cookie);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

三. cookie其它细节

1. 一个web站点可以给用户发送多个cookie

2. 不同浏览器cookie的个数和大小不一致

3. 每个web站点最多给用户发送20个cookie  // 未测试

使用Cookie实现显示用户上次访问时间的更多相关文章

  1. Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)

    1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...

  2. cookie案例-显示用户上次访问网站的时间

    package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...

  3. Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)

    Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...

  4. Cookie实现--用户上次访问时间

    用户上次访问时间  

  5. 02-cookie案例-显示用户上次访问网站的时间

    package cookie; import java.io.IOException;import java.io.PrintWriter;import java.util.Date; import ...

  6. Servlet案例6:显示用户的上次访问时间

    这里是cookie的简单应用 告诉用户您的上次访问时间是:xxxx-xx-xx xx:xx:xx 思路: 第一次访问该网站时候,记录当前访问时间(new Date()) 把当前时间以cookie的形式 ...

  7. 使用cookie记录用户上次访问网页的时间,并返回到页面

    package com.hopetesting.cookie;import javax.servlet.ServletException;import javax.servlet.annotation ...

  8. Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))

    本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...

  9. JavaWeb案例:上次访问时间 Cookie技术

    package cn.itcast.access; import javax.servlet.ServletException; import javax.servlet.annotation.Web ...

随机推荐

  1. CentOS 启动提示unexpected inconsistency;RUN fsck MANUALLY, ntfs的input/output Error,InPageError c000009c使用chkdsk修复磁盘,12款Linux系统恢复工具

    CentOS这两天服务器出了问题了,提示如下: unexpected inconsistency;RUN fsck MANUALLY An error occurred during the file ...

  2. Python-爬虫-requests库用语post登录

    requests库很强大,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和POST数据自动编码. 可以发送无参数的get请求, ...

  3. Windows内核驱动开发入门学习资料

    声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处:本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任.(本 ...

  4. 【LGP5127】子异和

    题目 子异和这个名字,真是思博 显然一个集合的子集异或和为,\(2^{|S|-1}\times A\),\(A\)为集合的或和 于是现在的问题变成了树链异或一个数,求树链或和 显然强行拆位是可以做的, ...

  5. Codeforces Round #526 D - The Fair Nut and the Best Path /// 树上两点间路径花费

    题目大意: 给定一棵树 树上每个点有对应的点权 树上每条边有对应的边权 经过一个点可得到点权 经过一条边必须花费边权 即从u到v 最终得分=u的点权-u到v的边权+v的点权 求树上一条路径使得得分最大 ...

  6. 【72. 编辑距离】【困难】【线性DP】

    给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输 ...

  7. NPE问题

    “防止 NPE,是程序员的基本修养.”NPE(Null Pointer Exception) 参考: https://www.jianshu.com/p/9915f2e34a13

  8. Activiti学习笔记5 — 常用API解析

    常用API解析: 一.ProcessEngineConfiguration 流程引擎配置对象(配置数据库连接4个大配置和建表策略) 二.ProcessEngine          流程引擎核心对象( ...

  9. 2019-8-31-dotnet-数组自动转基类数组提示-Co-variant-array-conversion-是什么问题

    title author date CreateTime categories dotnet 数组自动转基类数组提示 Co-variant array conversion 是什么问题 lindexi ...

  10. Ansible实现批量无密码登录

    如果机器多,假如有一百台服务器,每台服务器登录前都得先输入yes,使用交互式的方式下发公钥的话就很麻烦(ssh-copy-id). 第一次操作需要通过密码来操作服务器,所以配置文件需要把密码配置好 a ...