使用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 ...
随机推荐
- Go中的switch fallthrough
Go基础 switch sExpr { case expr1: some instructions case expr2: some other instructions case expr3: ...
- 剑指offer——21正则表达式匹配
题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式 ...
- hadoop 8088 看不到mapreduce 任务的执行状态
进到8088页面后,怎么看不到mapreudce的执行状态,有哪里需要配置的 解决办法: 在$HADOOP_HOME/conf/mapred-site.xml 在原来的配置文件基础之上添加: < ...
- 干货:Java技术栈18年02月精彩好文汇总
一晃眼,一个月过去了,新年也过完了. 一晃眼,又老了一岁了,感觉新的一年压力更大了. 我们也该为这一个月的技术做做汇总了,错过的同学正好可以统一回顾看看,已经看过的同学也可以再温习一下.. Java技 ...
- 【Latex】一些使用
http://www.mohu.org/info/symbols/symbols.htm GG..研究个公式就搞这么晚了..还不知道那三个报错的是怎么回事.. 意识模糊..睡了睡了. # Latex ...
- 使用雪碧图Css Sprite精灵 | 加速网页响应速度
什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它 ...
- 解决VS2012新建MVC4等项目时,收到此模板加载程序集“NuGet.VisualStudio.Interop…”的错误
1.错误如图所示: 2.不管是VS2012,还是2013如果开始没安装Nuget包都或报这个错,因为VS2012就已经全面切换到使用NuGet这个第三方开源工具来管理项目包和引用模块了,使用VS201 ...
- 使用navicat 使用IP、用户名、密码直接连接linux服务器里面的数据库
一般新申请的服务器,没有开通3306端口的吧,反正我遇到的,要用Navicat去连接linux下的数据库,都必须填写两个地方的信息,才能链接成功. 如果想要只通过填写ip还有数据库用户名还有密码就可以 ...
- axios调用接口
axios调用接口 1. 按照axiosnpm install --save-dev axios2.在main.js 引入axios, 设置全局属性$http 指向axios main.js impo ...
- Keras+Yolo 目标检测
参考:https://www.cnblogs.com/tensorflownews/p/8922359.html Github:https://github.com/qqwweee/keras-yol ...