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. sqli-laba靶场搭建

    windows下安装sqli-laba 环境:windows10 安装phpstudy 1.下载并安装小皮面板phpstudy(傻瓜式安装) https://www.xp.cn/windows-pan ...

  2. Nodejs报错记录

    ◉ digital envelope routines::unsupported D:\workspace\vuedemo> npm run dev ... error:0308010C:dig ...

  3. Redis 数据结构-双向链表

    Redis 数据结构-双向链表 最是人间留不住,朱颜辞镜花辞树. 1.简介 Redis 之所以快主要得益于它的数据结构.操作内存数据库.单线程和多路 I/O 复用模型,进一步窥探下它常见的五种基本数据 ...

  4. ASP.NET 6.0 Core 迁移 ASP.NET Core 7.0

    2022年微软发布了.NET 7, 同时提供了详细的升级迁移方案. Migrate from ASP.NET Core 6.0 to 7.0 今天给大家简单整理.分享一篇文章. 一.首先需要升级Vis ...

  5. 不止ChatGPT,谷歌云 AI 方案早已厉兵秣马!

    近日 ChatGPT 爆火,掀起热议,能聊天能写代码,还能写策划稿,AI 似乎已逐渐变得无所不能. 不过在 AI 对话上,谷歌早在17年就提出了 Dialogflow 这一AI对话平台.相比起 Cha ...

  6. Flutter 3.7 新特性:介绍后台isolate通道

    Flutter 3.7 发布,本人对其中后台 isolate 通道比较感兴趣,迫不及待翻译了下Aaron Clarke文章,第一次翻译,有不足地方欢迎各位大佬们评论区指正,我将持续更新到本文,谢谢. ...

  7. BOM操作、DOM操作、jQuery类库

    BOM操作.DOM操作.jQuery类库 一.BOM操作 BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行对话 1.window对象 浏 ...

  8. wixtoolset visualstudio 2017打包流程(1)

    第一步: 使用wix提供的 heat.exe 工具生成后缀为 wsx 的配置文件.   heat.exe dir ".\binr" -dr INSTALLFOLDER -cg Pr ...

  9. 12月22日内容总结——django中间件的三个了解要求的方法、基于django中间件的功能设计、cookie与session

    目录 一.django中间件三个了解的方法 二.django中间件五个方法的执行流程详解 三.基于django中间件的功能设计 功能设计介绍 如何利用字符串导入模块 功能模拟 四.cookie与ses ...

  10. Djanngo-bbs项目

    1.项目开发基本流程 1.需求分析 2.架构设计 3.分组开发 4.提交测试 5.交付上线 2.项目流程 仿造博客园项目(核心:文章的增删改查) 1.表分析: 1.1用户表 1.2个人站点表 1.3文 ...