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;
  1. 有指定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之记录用户上次访问时间的更多相关文章

  1. 使用Cookie实现显示用户上次访问时间

    一. 常用Cookie API介绍 1. 获取cookie request.getCookies();  // 返回Cookie[] 2. 创建cookie Cookie(String key, St ...

  2. 简单的Cooki案例——记录用户上次访问该网页的时间

    功能: 帮助网站实现提示客户端计算机上次访问网站的时间 实现原理: 将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中, ...

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

    用户上次访问时间  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Python实验报告(第10章)

    实验10:文件及目录操作 一.实验目的和要求 1.掌握基本文件操作(创建.打开.关闭.写入): 2.掌握目录操作的基本操作(创建.删除.遍历): 3.了解高级文件操作(删除文件.获取文件基本信息). ...

  2. 读python代码-学到的python函数-1

    1.with open(data_path,'r') as f: with open()是python用来打开本地文件的,他会在使用完毕后,自动关闭文件,无需手动书写close(). 三种打开模式: ...

  3. pnpm配置

    之前通过 nvm 来管理了 nodejs 版本,结果安装 pnpm 之后,安装全局依赖报错,如下: PS C:\Users\Administrator> pnpm i -g commitizen ...

  4. day06-Spring管理Bean-IOC-04

    Spring管理Bean-IOC-04 3.基于注解配置bean 3.1基本使用 3.1.1说明 基本说明:基于注解的方式配置bean,主要是项目开发中的组件,比如Controller,Service ...

  5. 移动端微信小程序开发学习报错记录--toast.js:41 未找到 van-toast 节点,请确认 selector 及 context 是否正确

    这个问题仔细检查了一下代码引入,是没有问题的, 根本原因是在页面上忘了加<van-toast id="van-toast" /> 具体引入代码如下: app.json ...

  6. vue3和百度地图关键字检索 定位 点击定位

    效果图 在index.html中引入 百度地图开放平台 去申请你的ak 非常的简单可以自己百度 一下 <!-- 这个用官网给的有好多警告 更具百度的把 https://api.map.baidu ...

  7. 怎么把Java,PHP,Vue等项目上传到GitHub,码云等

    一.到github或者码云上建立一个私有或公开仓库(这里以github为例) 创建成功后我们得到了一个仓库地址,github上的操作完成,现在去项目内捣鼓 二.提交本地文件并推送 1.我是用命令的格式 ...

  8. 在 MBP(Apple M1 Pro)上捣鼓友善 nanoPi R5S——【一、构建 rkdeveloptool】

    在种草了很多天之后,最近终于在淘宝下单了友善 nanoPi R5S. 选择友善 nanoPi R5S 有两点主要理由: 1. 自带 EMMC 存储,可以使用 RockChip 提供的 MaskRom ...

  9. 记录一次排查log4cxx库按照日期回滚,不创建新目录的BUG

    目录 1.背景 2.排查步骤 2.1.错误代码定位 2.2.问题猜测 2.3.错误代码分析 2.4.错误原因 3.解决方法 1.背景 C++ 项目,使用了 log4cxx 日志库,版本为:0.10.0 ...

  10. Jetpack Compose学习(10)——使用Compose物料清单BOM,更好管理依赖版本

    原文地址:Jetpack Compose学习(10)--使用Compose物料清单BOM,更好管理依赖版本 - Stars-One的杂货小窝 本期讲解下关于Android推出的BOM来简化我们添加co ...