(案例)使用Cookie保存用户最后一次访问的时间

文章目录

  • 需求
  • 分析
  • 示例代码

需求

1.访问一个Servlet,如果获取不到上一次访问的时间,则提示:您好,欢迎访问。
2.如果可以获取上一次访问的时间,则提示:您好,欢迎回来,您上次访问时间为:显示时间字符串

分析

在服务器中的Servlet判断是否有一个名为 lastTime 的 cookie
1.有

则响应数据:您好,欢迎回来,您上次访问时间为:2018年6月10日11:50: 20
写回 Cookie:lastTime=2018年6月10日11 :50:01

2.没有
响应数据:您好,欢迎访问
写回 Cookie:lastTime=2018年6月10日11 :50:01

示例代码

package priv.lwx.cs.example;
/*** 通过Cookie保存用户最后一次访问的时间** @author liaowenxiong* @date 2022/1/14 16:39*/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.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;@WebServlet("/last_time")
public class SaveLastTimeByCookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");boolean flag = false;PrintWriter writer = response.getWriter();// 获取所有的CookieCookie[] cookies = request.getCookies();// 遍历Cookie数组,查找是否存在名为lasttime的Cookieif (cookies != null && cookies.length != 0) {for (Cookie cookie : cookies) {String name = cookie.getName();if ("lastTime".equals(name)) {// 存在名为lastTime的Cookie,则将变量flag的值设为trueflag = true;String value = cookie.getValue();// value是application/x-www-form-urlencoded字符串,需要解码String decDate = URLDecoder.decode(value, "utf-8");writer.write("<h1>您好,欢迎回来,您上次访问的时间:" + decDate + "</h1>");// 获取系统当前时间Date date = new Date();// 创建日期格式对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// 格式化日期对象,返回一个日期字符串String strDate = sdf.format(date);System.out.println("URL编码前:" + strDate);// URL编码,因为Cookie无法存储空格等特殊字符,所以只能将含有空格的字符串转换成application/x-www-form-urlencoded字符串进行存储String encDate = URLEncoder.encode(strDate, "utf-8");System.out.println("URL编码后:" + encDate);// 用最新的系统时间替换名为lastTime的Cookie中旧的日期值cookie.setValue(encDate);// 将名为lastTime的Cookie添加到Response对象中response.addCookie(cookie);break;}}}// 没有名为lastTime的Cookieif (cookies == null || cookies.length == 0 || flag == false) {// 获取系统当前时间Date date = new Date();// 创建日期格式对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// 格式化日期对象,返回一个日期字符串String strDate = sdf.format(date);System.out.println("URL编码前:" + strDate);// URL编码,因为Cookie无法存储空格等特殊字符,所以只能将含有空格的字符串转换成application/x-www-form-urlencoded字符串进行存储String encDate = URLEncoder.encode(strDate, "utf-8");System.out.println("URL编码后:" + encDate);// 创建CookieCookie cookie = new Cookie("lastTime", encDate);// 设置Cookie的存活时间为1个月cookie.setMaxAge(30*24*60*60);response.addCookie(cookie);writer.write("<h1>您好,欢迎访问!</h1>");}}
}

注意:Cookie无法保存空格等字符串,需要进行URL编码进行保存,服务端取值时要URL解码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aws lambda使用_使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存

aws lambda使用快速提供内容对于任何网站或应用程序具有更好的客户体验都是必不可少的。 如果您将网站或应用程序托管在AWS Cloud中&#xff0c;那么无论从何处访问应用程序&#xff0c;都可以以较低的延迟快速提供内容。 AWS提供了CloudFront服务&#xff0c;用于将内容缓存在…

android+阴影+xml,Android 阴影视图 ShadowViewHelper

软件介绍ShadowViewHelper 是 Android 的阴影布局。xml:android:id"id/activity_main_shadow_view_b"android:layout_width"wrap_content" android:layout_height"wrap_content"android:layout_gravity"center"android:layout_marginT…

docker-compose观察实时日志_基于 Flink SQL CDC 的实时数据同步方案

整理&#xff1a;陈政羽(Flink 社区志愿者) Flink 1.11 引入了 Flink SQL CDC&#xff0c;CDC 能给我们数据和业务间能带来什么变化&#xff1f;本文由 Apache Flink PMC&#xff0c;阿里巴巴技术专家伍翀 (云邪)分享&#xff0c;内容将从传统的数据同步方案&#xff0c;基于 F…

困难是成功路上的垫脚石_Java是开发的垫脚石。 学习吧!

困难是成功路上的垫脚石Java是全世界使用最广泛的编程语言之一 。 尽管也有很多其他编程语言&#xff0c;但是没有什么可以比Java更好的了。 Java是用于开发移动应用程序&#xff0c;游戏&#xff0c;Web应用程序&#xff0c;桌面应用程序和许多其他令人兴奋的事物的出色语言之…

用c语言实现mfc系统,MFC实现学生选课系统

本文实例为大家分享了MFC实现学生选课系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下先上效果图&#xff1a;主要功能&#xff1a;输入学号&#xff0c;从数据库中查找学号&#xff0c;若找到相匹配的学号&#xff0c;则显示数据库中姓名、学历、导师&#xff…

IntelliJ IDEA for Mac工件包(artifact)中 Web facet resources 的模块名称有误,如何修改?

在工件管理界面中&#xff0c;如果某个工件包中 Web facet resources 的模块名称有误&#xff0c;如下图所示&#xff1a; 你可以在项目根目录下的 .idea/artifacts 目录下找到以工件名称命名的 xml 文件&#xff0c;找到其中含有 facet 属性的 element 标签&#xff0c;更正…

用python画一只可爱的皮卡丘_用python画一只可爱的皮卡丘实例

效果图#!/usr/bin/env python # -*- coding:utf-8 -*- from turtle import *绘制皮卡丘头部def face(x,y): """画脸""" begin_fill() penup() # 将海龟移动到指定的坐标 goto(x, y) pendown() # 设置海龟的方向 setheading(40) circle(-150, 69)…

vivado 仿真_提高Vivado效率一种自研工具介绍

在之前本公众号写过两篇关于工具更新对仿真调试提高效率的文章&#xff0c;《【干货】推荐一款FPGA仿真调试鸟枪换炮的工具&#xff01;》以及《NCVerilogSimVisionVivado仿真环境搭建》&#xff0c;详细描述了Linux环境下仿真环境搭建可以缩短五倍以上的仿真时间。本文仍是实验…

html图片自适应浏览器高度,css如何高度自适应浏览器高度?

高度自适应就是高度能跟随浏览器窗口的大小改变而改变&#xff0c;典型的运用在一些后台界面中上面一栏高度固定用作菜单栏或导航栏&#xff0c;下面一栏高度自适应用于显示内容。在IE7及chrome、firefox等浏览器中&#xff0c;高度自适应可以利用绝对定位来解决。但一个元素是…

Windows下Maven的下载、安装及IntelliJ IDEA集成配置

文章目录下载和安装 Maven创建本地仓库配置本地仓库路径配置环境变量IDEA 中配置 Maven 的本地仓库解决IntelliJ IDEA 创建Maven项目速度慢问题下载和安装 Maven 下载地址&#xff1a;https://maven.apache.org/download.cgi 压缩包下载后&#xff0c;将压缩包解压到合适的位置…

gis里创建要素面板怎么打开_【从零开始学GIS】ArcGIS中的绘图基本操作(二)

大家好&#xff0c;我是肝教程肝到熊猫眼的三三。本系列教程的发布&#xff0c;受到了很多同学的鼓励&#xff0c;大家在后台或微信上表达出对教程的喜爱&#xff0c;这便是更新教程的最大动力。上回教程讲解了“GIS基本操作”、“创建文档&#xff06;加载数据”、“创建GIS数…

openjdk 编译_使用OpenJDK 11运行JAXB xjc编译器

openjdk 编译如文章“ 要从Java 11中删除的API ”所述&#xff0c;JDK 11不再包括 JAXB实现。 在本文中&#xff0c;我将结合使用JAXB &#xff08; 用于XML绑定的Java体系结构 &#xff09; 参考实现提供的xjc编译器和OpenJDK 11&#xff0c;将XML模式文件编译成Java类。 在J…

unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

Python是增长最快的主要通用编程语言。原因有很多&#xff0c;比如它的可读性和灵活性&#xff0c;易于学习和使用&#xff0c;可靠和高效。 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的主要版本&#xff0c;而后者正在积极开发中&#xff0c;在…

IntelliJ IDEA for Mac的安装目录

点击显示包内容&#xff0c;就可以打开 IDEA 的安装目录了&#xff0c;如下图所示&#xff1a; 安装目录路径如下&#xff1a; /Applications/IntelliJ IDEA.app/Contents

IntelliJ IDEA for Mac中的Maven操作窗口详解

文章目录简介操作按钮详解Reload All Maven ProjectsGenerate Sources and Update Folders For All ProjectsDownload Sources and/or DocumentationAdd Maven ProjectsRun Maven BuildExecute Maven GoalToggle Offline ModeToggle Skip Tests ModeShow Dependencies布局展示模…

ai背景合成_智能合成AI主播很危险,应立即取消!

邱震海分享我对时政问题的看法点击↑↑↑音频收听“倾听彼得 邱”音频背景每年两会&#xff0c;关注报道两会的记者多达3000多人&#xff0c;他们分布在会场内外及时捕捉两会动人瞬间和重要时刻&#xff0c;及时向全国乃至全球读者传递。但是今年的两会报道期间&#xff0c;新…

简述html的3种列表uloldl,语义化HTML:ul、ol和dl

一、语义化元素1. ul标签W3C草案&#xff1a;The ul element represents an unordered list of items; that is, a list in which changing the order of the items would not change the meaning of list.语义化元素&#xff1a;表示包含一组无序列表项内容。在不同的浏览器默…

centos8 kernel source 安装_什么?你在物理机上安装Oracle总失败?那就试试Docker吧

写在前面有些小伙伴按照我写的《【Oracle】什么&#xff1f;作为DBA&#xff0c;你竟然不会安装Oracle&#xff1f;&#xff1f;》一文&#xff0c;在CentOS 8.0服务器上来安装Oracle&#xff0c;总是说&#xff1a;安装不成功&#xff01;但是我确实也是在CentOS 8.0服务器上安…

starter_您是否尝试过MicroProfile Starter?

starterhttps://start.spring.io的SPRING INITIALIZR已经存在了一段时间&#xff0c;并且是引导新的Spring Boot应用程序的最佳方法。 到目前为止&#xff0c;即使不同的供应商为其实施提供了启动器&#xff0c;也没有类似的方式来引导新的MicroProfile项目。 但是等待已经结束…

八中计算机是学啥的,北京八中:居然有这么好玩的课

北京八中&#xff1a;居然有这么好玩的课中国青年报北京12月13日电(记者堵力)种种“稀奇古怪”的科技知识纳入了北京八中学生们的正式课程。每周&#xff0c;所有的学生都会面对各种仪器&#xff0c;学习电台、电脑&#xff0c;以及兵器装备的知识等等———12月13日上午9&…