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. 迁移学习(DANN)《Domain-Adversarial Training of Neural Networks》

    论文信息 论文标题:Domain-Adversarial Training of Neural Networks论文作者:Yaroslav Ganin, Evgeniya Ustinova, Hana ...

  2. 洛谷 P1478 陶陶摘苹果(升级版) 题解

    这道题只要会自定义cmp恰当地进行排序,其他部分没有什么大问题. 上代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n ...

  3. vue+div.canvas图像标注功能实现

    main.js import Vue from 'vue' import 'vueui-widgets/dist/index.css' import VueUI from 'vueui-widgets ...

  4. MAC 安装homebrew最好的办法哦~~

    Command+Shift+. 可以显示隐藏文件.文件夹,再按一次,恢复隐藏:finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹.   常用指令如下 cd ~ 进入根 ...

  5. 路由分发、名称空间、视图层之必会的三板斧、JsonResponse对象、request获取文件、FBV与CBV、模板层语法传值

    路由分发.名称空间.视图层之必会的三板斧.JsonResponse对象.request获取文件.FBV与CBV.模板层语法传值 一.昨日内容回顾 二.路由分发 1.djiango的每个应用都有主见的t ...

  6. 如何通过Zabbix Docker配置HTTPS访问系统?

    概述 前面文章曾介绍过如果使用docker-compose快速部署一个Zabbix系统,但是部署的Zabbix系统是使用http协议进行访问的.有时候为了保证安全.我们需要配置使用https协议进行访 ...

  7. 了解 Transformers 是如何“思考”的

    Transformer 模型是 AI 系统的基础.已经有了数不清的关于 "Transformer 如何工作" 的核心结构图表. 但是这些图表没有提供任何直观的计算该模型的框架表示. ...

  8. 10月25日内容总结——正则表达式相关知识与re模块

    目录 一.正则表达式前戏 二.正则表达式内容介绍 1.字符组 2.特殊符号 3.量词 4.贪婪匹配与非贪婪匹配 贪婪匹配 非贪婪匹配 5.转义符 6.正则表达式实战建议与一些例子 建议 例子 三.re ...

  9. supervisor管理java进程

    安装 yum install supervisor 设置开机启动 systemctl enable supervisord 启动supervisord systemctl start supervis ...

  10. 洛谷P1365 期望dp

    题目描述 一个o/x序列的得分为其中每个o的极大连续子段长度的平方和,比如ooxxxxooooxxx,分数就是 \(2 \times 2 + 4 \times 4 = 4 +16=20.\) 现给定一 ...