需求:

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

分析:

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

代码实现:

 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("/cookieservlet")
public class cookieservlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应消息体的数据格式以及编码
response.setContentType("text/html;charset=utf-8"); //1 获取所有 cookie
Cookie[] cookies = request.getCookies();
boolean flag = false; // 默认没有 cookie 为 lastTime
// 2.遍历cookie 数组
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
// 3 获取所有的cookie 名称
String name = cookie.getName();
// 4.判断名称是否是 lastTime
if("lastTime".equals(name)) {
// 有 cookie,不是第一次访问
flag = true; // 获取 cookie 的 value
// 响应数据
// 获取 cookie 的value,s时间
String value = cookie.getValue(); System.out.println("解码前:"+value);
// URL 解码
value = URLDecoder.decode(value, "utf-8");
System.out.println("解码后:"+value); //设置cookie 的 value
// 获取当前时间的字符串,重新设置 cookie 值,重新发送cookie Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date); System.out.println("编码前:"+str_date);
//URL 编码
str_date = URLEncoder.encode(str_date, "utf-8");
System.out.println("编码后:"+str_date); cookie.setValue(str_date); // 设置 cookie的存活时间
cookie.setMaxAge(60*60);
response.addCookie(cookie); response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>"); break;
}
}
} if(cookies == null || cookies.length==0 || flag == false) {
// 没有,第一次访问 //设置cookie 的 value
// 获取当前时间的字符串,设置cookie值,发送cookie Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
Cookie cookie = new Cookie("lastTime",str_date); // 解决时间里面有特殊字符,使用 URL 编码
System.out.println("编码前:"+str_date);
//URL 编码
str_date = URLEncoder.encode(str_date, "utf-8");
System.out.println("编码后:"+str_date); cookie.setValue(str_date); // 设置 cookie的存活时间
cookie.setMaxAge(60*60);
response.addCookie(cookie); response.getWriter().write("<h1>欢迎您首次访问</h1>");
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}

Java 之 cookie 记住用户登录时间案例的更多相关文章

  1. java使用Cookie判断用户登录情况

    1.判断是否登录 public boolean isLogin() { Set<Cookie> cookies = this.browser.getCookies(); String JS ...

  2. Django 用Session和Cookie分别实现记住用户登录状态

    简介 由于http协议的请求是无状态的.故为了让用户在浏览器中再次访问该服务端时,他的登录状态能够保留(也可翻译为该用户访问这个服务端其他网页时不需再重复进行用户认证).我们可以采用Cookie或Se ...

  3. Asp.Net MVC记住用户登录信息 下次登录无需输入密码

    有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo ...

  4. java.net.URL 模拟用户登录网页并维持session

    java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...

  5. java.net.URL 模拟用户登录网页并维持session【转】

    java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...

  6. spring security实现记录用户登录时间等信息

    目录 spring security实现记录用户登录时间等信息 一.原理分析 二.实现方式 2.1 自定义AuthenticationSuccessHandler实现类 2.2 在spring-sec ...

  7. vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)

    前言 本篇随笔主要写了手动搭建一个webpack+Vue项目,掌握相关loader的安装与使用,包括css-loader.style-loader.vue-loader.url-loader.sass ...

  8. cookie实现用户登录验证

    cookie实现用户登录验证 1, INSTALLED_APPS中注册app03 2,在主程序中新建映射关系到app3的url中 from django.conf.urls import url,in ...

  9. 基于cookie的用户登录状态管理

    cookie是什么 先来花5分钟看完这篇文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies 看完上文,相信大家对cookie已经有 ...

随机推荐

  1. postgresql cstore_fdw安装与性能测试

    据介绍,cstore_fdw实现了 PostgreSQL 数据库的列式存储.列存储非常适合用于数据分析的场景,数据分析的场景下数据是批量加载的.这个扩展使用了Optimized Row Columna ...

  2. openssl制作证书全过程 + 部分修改

    一:生成CA证书    目前不使用第三方权威机构的CA来认证,自己充当CA的角色.     先决条件:从openssl官网下载www.openssl.org                安装open ...

  3. odoo开发笔记 -- related用法

    related:字面意思-关联字段,表示本字段引用关联表中的某字段. 格式为:fields.related(关系字段,引用字段,type,relation,string,...),关系字段是本对象的某 ...

  4. spring cloud java: 无法访问redis.clients.jedis.JedisPoolConfig 找不到redis.clients.jedis.JedisPoolConfig的类文件

    spring cloud <spring-cloud.version>Greenwich.SR3</spring-cloud.version> 注入Redis 时候: @Bea ...

  5. 人脸识别(基于ArcFace)

    我们先来看看效果 上面是根据图片检测出其中的人脸.每个人脸的年龄还有性别,非常强大 第一步: 登录https://ai.arcsoft.com.cn/,注册开发者账号,身份认证,注册应用,得到APPI ...

  6. C++文件fstream的操作

    用到的关于输入输出fstream流相关的知识 1.两个主要函数:read( )函数 从流中读取字符串的成员函数read 该成员函数一般形式是:read(char* pch, int nCount) 从 ...

  7. IEEE-754格式标准,float,

    float float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进 ...

  8. Zabbix 3.0 配置企业微信报警(配置zabbix-web)

    一.添加报警媒体类型 Name:自定义 Type:选择script Scripts name:填写脚本名称 Script parameters:脚本参数 --corpid=XXX --corpsecr ...

  9. Java Web 应用概述

    1.java Web 应用是建立在java语言基础上的企业web应用系统,oracle公司根据行业发展和便于开发制定了一套规范:Java EE规范,截至到当前(2016.3.11)是java EE7规 ...

  10. Tomcat总结四种部署方式

    静态部署 一.Webapps 把项目复制到Tomcat的Webapps 把war包复制到Tomcat的Webapps下 *修改Webapps的默认路径: * Tomcat的conf目录下的server ...