zoukankan      html  css  js  c++  java
  • 使用cookie记录用户上次访问网页的时间,并返回到页面

    package com.hopetesting.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;

    /**
    * @author newcityman
    * @date 2019/9/3 - 0:08
    * 在服务器中的servlet中判断是否有一个名为lastTime的cookie
    * 1、if 有:表示不是第一次访问
    * 1、响应数据,欢迎回来,您上次访问时间为:2019年9月3日 11:23:23
    * 2、写回cookie:lastTime=2019年9月3日 11:23:23
    * 2、if没有:表示第一次访问
    * 1、响应数据:您好,欢迎您首次访问
    * 2、写回cookie:lastTime=2019年9月3日 11:23:23
    */
    @WebServlet("/cookieTest")
    public class CookieTest 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;
    //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的值,重新发送cookie
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    String str_date = sdf.format(date);
    // URL编码
    str_date = URLEncoder.encode(str_date, "utf-8");
    cookie.setValue(str_date);
    // 设置cookie的存活时间
    cookie.setMaxAge(60 * 60 * 24 * 30);
    response.addCookie(cookie);
    //响应数据
    //获取cookie的value。时间
    String value = cookie.getValue();
    // URL解码
    value = URLDecoder.decode(value, "utf-8");
    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 = sdf.format(date);
    str = URLEncoder.encode(str, "utf-8");
    Cookie cookie = new Cookie("lastTime", str);
    // 设置最大的存活时间
    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
    response.addCookie(cookie);
    response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
    }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
    }
    }
  • 相关阅读:
    支持向量机(SVM)
    MapReduce(二) MR的高级特性-序列化、排序、分区、合并
    HDFS(二) 底层通信原理——RPC 及 动态代理
    HDFS(一) 高级特性
    UML类图中最重要的几种类关系及其表示
    不同.c文件中声明的全局变量的使用理解
    全局变量和局部变量
    转载 永远不要在.h文件中定义变量!
    LabVIEW介绍
    C语言程序注释风格
  • 原文地址:https://www.cnblogs.com/newcityboy/p/11450732.html
Copyright © 2011-2022 走看看