Java 之 cookie 记住用户登录时间案例

需求:

  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

代码实现:

  1 import javax.servlet.ServletException;
  2 import javax.servlet.annotation.WebServlet;
  3 import javax.servlet.http.Cookie;
  4 import javax.servlet.http.HttpServlet;
  5 import javax.servlet.http.HttpServletRequest;
  6 import javax.servlet.http.HttpServletResponse;
  7 import java.io.IOException;
  8 import java.net.URLDecoder;
  9 import java.net.URLEncoder;
 10 import java.text.SimpleDateFormat;
 11 import java.util.Date;
 12
 13 /**
 14    记住用户登录时间案例
 15  */
 16 @WebServlet("/cookieservlet")
 17 public class cookieservlet extends HttpServlet {
 18     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 19         // 设置响应消息体的数据格式以及编码
 20         response.setContentType("text/html;charset=utf-8");
 21
 22         //1 获取所有 cookie
 23         Cookie[] cookies = request.getCookies();
 24         boolean flag = false;  // 默认没有 cookie 为 lastTime
 25         // 2.遍历cookie 数组
 26         if (cookies != null && cookies.length > 0) {
 27             for (Cookie cookie : cookies) {
 28                 // 3 获取所有的cookie 名称
 29                 String name = cookie.getName();
 30                 // 4.判断名称是否是 lastTime
 31                 if("lastTime".equals(name)) {
 32                     // 有 cookie,不是第一次访问
 33                     flag = true;
 34
 35                     // 获取 cookie 的 value
 36                     // 响应数据
 37                     // 获取 cookie 的value,s时间
 38                     String value = cookie.getValue();
 39
 40                     System.out.println("解码前:"+value);
 41                     // URL 解码
 42                     value = URLDecoder.decode(value, "utf-8");
 43                     System.out.println("解码后:"+value);
 44
 45
 46                     //设置cookie 的 value
 47                     // 获取当前时间的字符串,重新设置  cookie 值,重新发送cookie
 48
 49                     Date date = new Date();
 50                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 51                     String str_date = sdf.format(date);
 52
 53                     System.out.println("编码前:"+str_date);
 54                     //URL 编码
 55                     str_date = URLEncoder.encode(str_date, "utf-8");
 56                     System.out.println("编码后:"+str_date);
 57
 58                     cookie.setValue(str_date);
 59
 60                     // 设置 cookie的存活时间
 61                     cookie.setMaxAge(60*60);
 62                     response.addCookie(cookie);
 63
 64
 65                     response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>");
 66
 67                     break;
 68                 }
 69             }
 70         }
 71
 72         if(cookies == null || cookies.length==0 || flag == false) {
 73             // 没有,第一次访问
 74
 75             //设置cookie 的 value
 76             // 获取当前时间的字符串,设置cookie值,发送cookie
 77
 78             Date date = new Date();
 79             SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 80             String str_date = sdf.format(date);
 81             Cookie cookie = new Cookie("lastTime",str_date);
 82
 83             // 解决时间里面有特殊字符,使用 URL 编码
 84             System.out.println("编码前:"+str_date);
 85             //URL 编码
 86             str_date = URLEncoder.encode(str_date, "utf-8");
 87             System.out.println("编码后:"+str_date);
 88
 89             cookie.setValue(str_date);
 90
 91             // 设置 cookie的存活时间
 92             cookie.setMaxAge(60*60);
 93             response.addCookie(cookie);
 94
 95             response.getWriter().write("<h1>欢迎您首次访问</h1>");
 96         }
 97     }
 98
 99     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
100         this.doPost(request, response);
101     }
102 }

原文地址:https://www.cnblogs.com/niujifei/p/11622746.html

时间: 2024-08-27 15:18:44

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

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

有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo可以到百度云和码云下载, 百度云下载链接:https://pan.baidu.com/s/1rfQNxpM8WGxkBbdiS1mLeQ    密码:if1q 马云下载链接:https://gitee.com/WuFengZui/RememberLoginDemo    [没有下载链接的都是耍流氓 

Powershell 比较AD和Exchange的用户登录时间

今天早上朋友问我如何获取指定某个时间段的AD用户登录时间和相关的邮箱登录时间. 豆子公司的Exchange已经转移到Office365上,首先远程的导入AD模块,本地导入MSOnline的模块,这样我就可以远程访问AD和Office365了 下面是一个例子,判断90天没有登录的AD账号,并把其中30天没有登陆邮箱的账号都找出来 # 导入AD模块 $s= New-PSSession -ComputerName "syddc01" Invoke-Command -Session $s {I

java 使用cookie记录用户上一次访问的时间 记住 用户的 登录名

package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSer

jsp Cookie记住用户的登录状态

Login.jsp <%@ page language="java" import="java.util.*,java.net.*" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.get

Java基础知识强化之集合框架笔记37:用户登录注册案例

1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢?                 用户类                 测试类       • 每个类有哪些东西呢?                 用户类: 成员变量:用户名,密码                            构造方法:无参构造                            成

IO版的用户登录注册案例(Java)

2017-09-16 这是我在博客园的第一篇学习笔记. Java小白,努力进阶中... 今天学的是用户登录注册功能.4个包:itcast.cn.user包 User.java 用户类,描述用户基本信息,包括成员变量,无参构造函数,带参构造(可有可无).get和set方法 1 package itcast.cn.day22; 2 /* 3 * 用户基本描述包类 4 */ 5 6 public class User { 7 private int userName; 8 private int pa

设置Cookie,登录记住用户登录信息,获取用户登录过得信息

1 function setCookie(name,value) 2 { 3 var Days = 30; 4 var exp = new Date(); 5 exp.setTime(exp.getTime() + Days*24*60*60*1000); 6 document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();+ "; path=" + &

Cookie中用户登录信息的提示

public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServlet

用户登录注册案例分析

项目需求: 按软件分层设计思想完成xml文件存储用户信息实现用户注册登录的功能.需求分析: 1.使用JAVAEE的经典三层结构 2.三层结构分别对应的包 M JavaBean com.hitech.domain   Service com.hitech.service   Dao com.hitech.dao                V/C Web/Servlet com.hitech.web     其他包  异常处理 com.hitech.exception     工具类 com.h