使用Cookie实现显示用户上次访问时间
一. 常用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实现显示用户上次访问时间的更多相关文章
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...
- cookie案例-显示用户上次访问网站的时间
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...
- Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)
Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...
- Cookie实现--用户上次访问时间
用户上次访问时间
- 02-cookie案例-显示用户上次访问网站的时间
package cookie; import java.io.IOException;import java.io.PrintWriter;import java.util.Date; import ...
- Servlet案例6:显示用户的上次访问时间
这里是cookie的简单应用 告诉用户您的上次访问时间是:xxxx-xx-xx xx:xx:xx 思路: 第一次访问该网站时候,记录当前访问时间(new Date()) 把当前时间以cookie的形式 ...
- 使用cookie记录用户上次访问网页的时间,并返回到页面
package com.hopetesting.cookie;import javax.servlet.ServletException;import javax.servlet.annotation ...
- Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))
本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...
- JavaWeb案例:上次访问时间 Cookie技术
package cn.itcast.access; import javax.servlet.ServletException; import javax.servlet.annotation.Web ...
随机推荐
- Java-Class-@I:org.apache.ibatis.annotations.Mapper
ylbtech-Java-Class-@I:org.apache.ibatis.annotations.Mapper 1.返回顶部 2.返回顶部 1. package com.ylbtech.ed ...
- GPIO, AFIO
o read/write the AFIO_EVCR, AFIO_MAPR and AFIO_EXTICRX registers, the AFIO clock should first be ena ...
- word 文献标题自动编号
来自:word中自动编号和多级编号的使用 选中标题或段落,点击鼠标右键,在编号菜单内选择适合的自动编号样式.或者在窗口上方的“开始”选项卡中选择编号样式.如果对已选的编号样式不满意,可以照以上方法直接 ...
- CentOS7中下载MySQL
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~CentOS 7中,yum默认安装的是Mariadb,但我想使用MyS ...
- innodb 表
1.innodb的存储引擎表类型 如果在创建表时没有显示的定义主键,则innodb存储引擎会按如下方式选择或创建主键 a.首先表中是否有非空的唯一约束(Unique not null)如果有,则该列即 ...
- sublime text-----查看当前文件的编码格式
1.preferences->settings,在user中添加 "show_encoding": true, "show_line_endings": ...
- redis笔记_源码_跳表skiplist
参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/dat ...
- 【JZOJ6274】梦境
description analysis 其实可以贪心 先把区间按左端点排序,转折点也排序 扫一次转折点,把所有左端点在当前点左边的区间丢进优先队列里 按照贪心策略,对于某个转折点,一定选择右端点离它 ...
- 廖雪峰Java16函数式编程-2Stream-1Stream简介
1. Stream Java8引入全新的Stream API 位于java.util.stream包 1.1 Stream API不同于java.io的InputStream/OutputStream ...
- JSON 单例类
MD5JSON.h #pragma once #include "include/json/json.h" #include "include/md5/md5.h&quo ...