使用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 ...
随机推荐
- LogInfoHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- 图文形式分享网页到facebook (要求:可以多个图片切换选择)
分享网页到facebook的功能很常见,之前都是简单的网页分享,没遇到什么砍儿.这次的需求相比之前有一丁点特殊,就是图片得是用户指定选择的. fb文档地址:https://developers.fac ...
- eclispe 创建maven 项目:Could not resolve archetype org.apache.maven.archetypes
昨天新装eclispe 后,创建maven工程后出现 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-q ...
- Python+Django+ansible playbook自动化运维项目实战✍✍✍
Python+Django+ansible playbook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受 ...
- Spark RDD基本操作
- --master-data 的作用
Use this option to dump a master replication server to produce a dump file that can be used to set u ...
- Linux 系统版本查询命令
.# uname -a (Linux查看版本当前操作系统内核信息) .# cat /proc/version (Linux查看当前操作系统版本信息) .# cat /etc/issue 或 cat / ...
- 解决Keep-Alive 和 Close 不能使用此属性设置
http://www.hejingzong.cn/blog/viewblog_86.aspx Keep-Alive 和 Close 不能使用此属性设置 public static void SetHe ...
- 校园商铺-4店铺注册功能模块-4Dto之ShopExecution的实现
1. DTO:添加店铺的返回类型 问题:为什么不直接用实体类Shop呢? 原因:在操作Shop的时候,必然会有一个状态.添加店铺,添加成功,还是添加失败? 如果添加失败,失败是一个什么状态,这些都是要 ...
- 0929CSP-S模拟测试赛后总结
70分31名滚粗. 赛后发现赛时得到的分数全都是暴力分…… T2打的三分跑都没跑……边界设错了……赛后稍微调了调多了15分…… 据说有15分的暴力分,那么另外15分就是只有一种选择的情况了…… (如果 ...