Cookie之记录用户上次访问时间
Cookie之记录用户访问时间
需求:
需求:
1:用户访问服务器(Servlet),判断用户是否是第一次访问,如果是第一次访问,则在页面响应内容为:“您好,欢迎您首次访问”;
2:用户访问服务器(Servlet),判断用户是否是第一次访问,如果不是第一次访问,则在页面响应内容为:“欢迎回来,您上次访问的时间为:xxxx年xx月xx日 , xx时xx分xx秒”;
需求分析:
该需求可以使用Cookie来完成,服务器(Servlet)先获取请求体头中的Cookie信息,如果该信息中不存在我们需要的信息,则该用户为首次访问.我们需要将当前时间存入Cookie,然后将Cookie信息回写到客户端(浏览器端),进行存储;如果该信息中存在我们需要的信息,则该用户不是首次访问.我们需要将当前时间存入Cookie,然后将Cookie信息回写到客户端(浏览器端),进行存储,并且在页面响应"欢迎回来,您上次访问的时间为:xxxx年xx月xx日 , xx时xx分xx秒"内容;
- 在服务器端(Servlet)进行判断:获取到的Cookie中是否有一个name为指定名字的Cookie;
- 有指定Cookie:代表不是首次访问
- 响应数据:欢迎回来,您上次访问的时间为:xxxx年xx月xx日 , xx时xx分xx秒;
- 回写Cookie;
2. 没有指定Cookie:代表是首次访问
- 响应数据:您好,欢迎您首次访问;
- 回写Cookie;
代码实现:
package servlet; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date; @WebServlet("/demo01")
public class Demo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应体格式参数
response.setContentType("text/html;charset=utf-8");
//获取所有的Cookie
Cookie[] cookies = request.getCookies();
//定义一个标记 用来表示是否存在指定name的Cookie,存在指定cookie,flag为false;不存在为true
boolean flag = true; //如果有Cookie
if (cookies != null && cookies.length != 0){
//遍历cookie数组
for (Cookie cookie : cookies) {
//判断cookie数组中是否存在指定name的Cookie
if ("LastTime".equals(cookie.getName())){//如果有指定name的cookie,说明用户非首次访问
//更改标记flag的状态值
flag = false;
//获取指定name cookie对应的值
String value = cookie.getValue();
//对获取到的值进行解码
String timeDecode = URLDecoder.decode(value, "utf-8");
//响应页面
response.getWriter().write("<h1>欢迎回来,您上次访问的时间是:" + timeDecode + "</h1>"); //获取当前时间
Date date = new Date();
//获取格式化日期对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 , HH时mm分ss秒");
//格式化当前时间
String time = simpleDateFormat.format(date);
//对时间字符串进行编码
String timeNow = URLEncoder.encode(time, "utf-8");
//设置Cookie存活时间
cookie.setMaxAge(45);
//更改cookie的值
cookie.setValue(timeNow);
//回写Cookie
response.addCookie(cookie);
//结束循环
break;
}
}
} //没有Cookie或者Cookie中没有指定name的Cookie,说明用户时首次访问
if (cookies == null || cookies.length == 0 || flag){
//获取当前时间
Date date = new Date();
//获取格式化日期对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 , HH时mm分ss秒");
//格式化当前时间
String time = simpleDateFormat.format(date);
//对时间字符串进行编码
String timeEncode = URLEncoder.encode(time, "utf-8");
//将编码后的时间字符串存入Cookie
Cookie cookie = new Cookie("LastTime", timeEncode);
//设置Cookie存活时间
cookie.setMaxAge(45);
//回写Cookie
response.addCookie(cookie);
//响应页面
response.getWriter().write("<h1>您好,欢迎您首次访问</h1>"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
实现效果:
- 首次访问效果:

- 不是第一次访问的效果:

Cookie之记录用户上次访问时间的更多相关文章
- 使用Cookie实现显示用户上次访问时间
一. 常用Cookie API介绍 1. 获取cookie request.getCookies(); // 返回Cookie[] 2. 创建cookie Cookie(String key, St ...
- 简单的Cooki案例——记录用户上次访问该网页的时间
功能: 帮助网站实现提示客户端计算机上次访问网站的时间 实现原理: 将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中, ...
- Cookie实现--用户上次访问时间
用户上次访问时间
- 使用cookie记录用户上次访问网页的时间,并返回到页面
package com.hopetesting.cookie;import javax.servlet.ServletException;import javax.servlet.annotation ...
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...
- cookie案例-显示用户上次访问网站的时间
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...
- Servlet案例6:显示用户的上次访问时间
这里是cookie的简单应用 告诉用户您的上次访问时间是:xxxx-xx-xx xx:xx:xx 思路: 第一次访问该网站时候,记录当前访问时间(new Date()) 把当前时间以cookie的形式 ...
- JavaWeb案例:上次访问时间 Cookie技术
package cn.itcast.access; import javax.servlet.ServletException; import javax.servlet.annotation.Web ...
- Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)
Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...
- 02-cookie案例-显示用户上次访问网站的时间
package cookie; import java.io.IOException;import java.io.PrintWriter;import java.util.Date; import ...
随机推荐
- [机器学习] Yellowbrick使用笔记2-模型选择
在本教程中,我们将查看各种Scikit Learn模型的分数,并使用Yellowbrick的可视化诊断工具对它们进行比较,以便为我们的数据选择最佳的模型. 代码下载 文章目录 1 使用说明 1.1 模 ...
- 诗词API
1.js依赖 /** * 今日诗词V2 JS-SDK 1.2.2 * 今日诗词API 是一个可以免费调用的诗词接口:https://www.jinrishici.com */ !function(e) ...
- .Net开发的系统安装或更新时如何避免覆盖用户自定义的配置
我们开发的系统,有时候会包含一些配置信息,需要用户在系统安装后自己去设置,例如我们有一个GPExSettings.xml文件,内容如下. <GPExSettings ArcPythonPath= ...
- 03初识MapReduce
初识MapReduce 一.什么是MapReduce MapReduce是一种编程范式,它借助Map将一个大任务分解成多个小任务,再借助Reduce归并Map的结果.MapReduce虽然原理很简单, ...
- 在Mac OS上将Node.js连接到XAMPP MySQL服务器一直报错error connecting: Error: connect ECONNREFUSED
以下為通過node.js連線本機mysql資料庫的方法: var mysql = require('mysql'); var connection = mysql.createConnection({ ...
- 手把手教你将Eureka升级Nacos注册中心
由于原有SpringCloud体系版本比较老,最初的注册中心使用的Eureka后期官方无升级方案,配置中心无法在线管理配置,还有实时上下线的问题,因此需要将原有系统的Eureka服务升级Nacos注册 ...
- HEU_KMS_Activator_v27.0.2全能系统数字许可激活工具
HEU_KMS_Activator_v27.0.2全能系统数字许可激活工具 HEU KMS Activator是KMS激活工具,支持激活 Windows XP.Windows 7.Windows 8. ...
- Vue视频 | 【Vue2 + Vue3 前端教程】完整版
目前大部分公司还是以vue.react技术为主的,而Vue中还是以Vue2为主流,但不可否认Vue3是未来所必须的且已有这个趋向了 今天给大家介绍一个Vue的教程 里面既有现在主流的Vue2 同时也存 ...
- 3分钟教你安装 Compressor视频转码编辑工具 V4.6.3中文破解版 小白一看就会
Comperssor 下载 下载直通车 立即下载 Mac App Store: https://apps.apple.com/cn/app/compressor/id424390742?ign-mpt ...
- vue3语法糖+ts组件传值
在开发中有些功能是通用的,而且逻辑大致相同,像这种东西可以封成一个组件,比较常用的就是函数封装,组件封装,组件封装是需要引入到页面使用的,所以通常它会有一些自己的方法,父子组件可以通过一些值来进行关联 ...