Cookie–记住上一次访问时间案例(Java)

Cookie–记住上一次访问时间案例(Java)Cookie–记住上一次访问时间案例(Java)博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!需求访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串分析可以采用Cookie来完成在服务器中的Servlet判断是否有一个名为lastTime的cookie有:不是第一次访问响应数据:欢迎回来,您上次访问时间为:2020年

大家好,又见面了,我是你们的朋友全栈君。

Cookie–记住上一次访问时间案例(Java)

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

需求

  1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
  2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串

分析

  1. 可以采用Cookie来完成
  2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
    1. 有:不是第一次访问
      1. 响应数据:欢迎回来,您上次访问时间为:2020年06月26日 10:52:29
      2. 写回Cookie:lastTime=2020年06月26日 10:52:29
    2. 没有:是第一次访问
      1. 响应数据:您好,欢迎您首次访问
      2. 写回Cookie:lastTime=2020年06月26日 10:52:29

代码

package cn.guizimo.cookie;

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("/cookieTest")
public class CookieTest extends HttpServlet { 
   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
   
        //设置响应的编码
        resp.setContentType("text/html;charset=utf-8");
        boolean flag = false;

        //获取所有的cookie
        Cookie[] cookies = req.getCookies();
        if (cookies != null && cookies.length > 0) { 
   
            for (Cookie cookie : cookies) { 
   
                String name = cookie.getName();
                //判断是否第一次登录
                if ("lastTime".equals(name)) { 
   
                    //获取当前时间,重新发送cookie
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    //编码
                    str_date = URLEncoder.encode(str_date, "utf-8");
                    cookie.setValue(str_date);
                    //设置存活时间,一个月
                    cookie.setMaxAge(60 * 60 * 24 * 30);
                    resp.addCookie(cookie);

                    //响应数据
                    String value = cookie.getValue();
                    //解码
                    value = URLDecoder.decode(value, "utf-8");
                    resp.getWriter().write("<h1>欢迎回来,您上次的登录时间为:" + value + "</h1>");
                }
            }
        }
        if (cookies == null || cookies.length == 0 || flag == false) { 
   
            //获取当前时间,重新发送cookie
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String str_date = sdf.format(date);
            //编码
            str_date = URLEncoder.encode(str_date, "utf-8");
            Cookie cookie = new Cookie("lastTime", str_date);
            //设置存活时间,一个月
            cookie.setMaxAge(60 * 60 * 24 * 30);
            resp.addCookie(cookie);

            resp.getWriter().write("<h1>欢迎首次访问</h1>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
   
        this.doPost(req, resp);
    }
}

测试

第一次访问

image-20200626104320981

再次访问

image-20200626105311004

感谢

黑马程序员

万能的网络

以及勤劳的自己

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156834.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle创建数据库实例失败_oracle数据库实例名是什么

    oracle创建数据库实例失败_oracle数据库实例名是什么Oracle数据库实例的创建、删除、修改   以SUSE10SP2、Oracle10gR2为例。      本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。(20090714修改)   安装完Ora

    2022年9月22日
    3
  • jupyter的代码能用pycharm运行吗_pycharm project interpreter

    jupyter的代码能用pycharm运行吗_pycharm project interpreter最近在学CS231n的课程,打算把作业做一下。由于…

    2022年8月29日
    4
  • linux rzsz安装

    linux rzsz安装

    2021年6月15日
    109
  • 十进制小数转化为二进制小数[通俗易懂]

    十进制小数转化为二进制小数[通俗易懂]一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为”按权相加”法。例如把二进制数110.11转换成十进制数。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1.十进制整数转换为二进制整数十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再

    2022年9月25日
    2
  • 我的程序员之路

    我的程序员之路

    2021年7月22日
    64
  • 如何从Java官网下载 Java API 文档

    如何从Java官网下载 Java API 文档1 登录 Oracle 官网 https www oracle com 2 进入 Java 页面 3 将页面拉到底部 4 将页面拉到中间 5 6 7 将页面下拉 8 9 1011 下载完成后解压到任意目录 打开 doc api 目录 打开 index 页面 尽情享受即可

    2025年9月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号