运用Cookie技术,统计访问次数以及上次访问时间。

2023-11-17

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

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;

/**
 * Servlet implementation class CookieTest
 */
@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CookieTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;chartset=utf-8");
        PrintWriter out = response.getWriter();
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
        //获得当前时间
        String nowTime=sdf.format(new Date());
        //初始化最后一次访问的时间和次数
        String lastVistedTime ="";//最后一次访问的时间
        int vistedCount=0;//总访问次数
        //尝试获取cookie,并读取其中的内容
        Cookie[] myCookie = request.getCookies();
        //判断是否已经有Cookie
        if(myCookie!=null){
            //循环遍历cookie数组,逐个读取信息
            for(Cookie cookie:myCookie){
                //判断当前这个cookie是不是记录最近一次访问时间
                if(cookie.getName().equals("lastVistedTime")){
                    lastVistedTime = cookie.getValue();
                }
                //判断当前cookie是否记录访问次数
                if(cookie.getName().equals("vistedCount")){
                    vistedCount = Integer.parseInt(cookie.getValue());
                }
            }
        }
        //如果不是第一次访问,输出上一次访问时间
        if(!lastVistedTime.equals("")){
            out.println("您上次访问的时间是:"+lastVistedTime);
        }
        //输出访问该站点的次数
        out.println("您是第"+(vistedCount+1)+"次访问本站.<br>");
        
        //下面的代码将cookie中的数据进行更新
        Cookie lastVistedTimeCookie = new Cookie("lastVistedTime", lastVistedTime);
        lastVistedTimeCookie.setMaxAge(60*60*24*7);
        Cookie vistedCountCookie = new Cookie("vistedCount",(vistedCount+1)+"");
        vistedCountCookie.setMaxAge(60*60*24*7);
        response.addCookie(lastVistedTimeCookie);
        response.addCookie(vistedCountCookie);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运用Cookie技术,统计访问次数以及上次访问时间。 的相关文章

随机推荐

  • vue3封装简易的vue-echarts

    项目场景 数据可视化开发 采用的技术栈是vue3 echarts router 问题描述 在vue2中 才开始开发数据可视化大屏 都是用echarts 之后改用为vue echarts组件 但是到了vue3之后 组件会有一些小问题 所以准备
  • 如何强制解锁或删除被占用的文件或文件夹 - ForceDelete绿色强制文件删除工具

    你可能时常遇到无法删除Windows上的文件和文件夹的情况 并且会收到 无法删除文件 访问被拒绝 或 该文件已被其他程序打开 诸如此类的错误消息 这意味着这些文件和文件夹在Windows中被锁定 无法以常规方式删除 你可以试试ForceDe
  • 计算机如何根据人脸估计年龄,人脸图像算法研究(1)

    今天给大家带来一篇 人脸识别中的年龄估计技术 年龄特征作为人类的一种重要生物特征 计算机要如何基于人脸图像估计年龄呢 概述 简单地说 基于人脸图像的年龄估计是指机器根据面部图像推测出人的大概年龄或所属的年龄范围 年龄段 基于人脸图像的年龄估
  • 4.4.5 密码验证(2)

    4 当且仅当含数字和字母的密码验证 如果密码当且仅当包含数字和字母 那么该密码的强度是中等强度 当然 它的安全性一般 以下正则表达式能够验证当且仅当包含数字和字母的密码 da zA Z d a zA Z da zA Z 74 正则表达式 7
  • C++ 的四种类型转换

    背景 C语言中强制类型转换可以随意转换我们想要的类型 格式如下 类型 变量名 那么为什么C 还要引入新的4种类型转换呢 1 新的类型转换控制符可以很好的控制类型转换的过程 允许控制各种类型不同的转换 2 C 的类型转换控制服能告诉程序员或读
  • 【毕业设计】Python_学生校园消费行为

    资源下载 https download csdn net download wouderw 87357462 1 分析学校校园消费行为的目的 分析学生的消费行为和食堂的运营状况 为食堂运营提供建议 构建学生消费细分模型 为学校判定学生的经济
  • VT是什么?怎么打开教程

    装过虚拟机的朋友都知道 要想虚拟出cpu 就必须电脑打开VT VT指的是CPU的虚拟化技术 有了它就可以单CPU模拟多CPU并行 这样才可以虚拟出电脑出来 而如果你的bios没有打开VT的话 是不能创建虚拟机的 下面就教大家怎么打开VT 1
  • 华为员工自曝,工作四年,每天都哭想裸辞!

    架构师大咖 架构师大咖 打造有价值的架构师交流平台 分享架构师干货 教程 课程 资讯 架构师大咖 每日推送 公众号 该公众号已被封禁 进入华为是一项令人向往的机会 但它并不适合每个人 许多人都希望能够进入这家公司 但实际上 它要求员工具备卓
  • 加权回归估计_比率估计与回归估计

    本章讨论简单随机抽样和分层随机抽样下比率估计和回归估 计的构造及性质 要求 掌握总体比率 比率估计量及回归估计量的概念 了解比率估计量 回归估计量的偏倚 方差及方差的估计量 掌握应用比率估计量及回归估计量的条件 抽样调查从本质上看是利用不完
  • 蓝桥杯:拉马车

    目录 题目描述 输入描述 输入为 2 行 2 个串 分别表示 A B 双方初始手里的牌序列 我们约定 输入的串的长度不超过 30 输入输出样例 输入 输出 题目分析 列表 递归 AC代码 Java 题目描述 小的时候 你玩过纸牌游戏吗 有一
  • Linux最基础

    软件包安装的时候 会经常用到 tar zxvf Japan tar gz 如果要做LAMP环境的编译 建立一个LAMP源代码包构建的PHP生产环境 下载的包都是 tar gz 这样的源代码包 创建目录 mkdir 创建文件 touch 命令
  • Apache Commons Compress介绍-Zip压缩解压

    Apache Commons Compress介绍 Zip压缩解压 简述 为什么使用Apache Commons Compress 在使用java自带的ZipFile处理zip文件时报如下错误java lang IllegalArgumen
  • 安装virtualbox时安装程序出现严重错误

    问题 windows 8 1 下virtualbox安装到一半跳出错误窗口被迫终止 窗口如下 virtualbox install fail https img blog csdn net 20160622163138051 解决方法 在服
  • 从头走前端-百度前端技术学院(1)

    记录自己在网上自学加复习的前端笔记 当然还有一些其他涉及的相关知识 问题 在web建站技术中 HTML HTML5 XHTML CSS JavaScript PHP SQL web services是什么 答 首先知道网站的访问过程 1 输
  • navicat 绿化版

    navicat自带注册码 已经绿化 解压到任意目录就可运行 Navicat Premium 是一个可多重连接的数据库管理工具 它可让你以单一程序同时连接到 MySQL Oracle PostgreSQL SQLite 及 SQL Serve
  • 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型 常见的IO模型有四种 1 同步阻塞IO Blocking IO 即传统的IO模型 2 同步非阻塞IO Non blocking IO 默认创建的socket都是阻塞的 非阻塞IO
  • Python retrying模块

    参见 http segmentfault com a 1190000004085023 github源码 https github com rholder retrying
  • QT信号槽连接方式

    1 QT信号槽主要分两个连接方式 手动和自动 1 1 使用 connect 函数手动连接信号和槽 QObject connect sender SIGNAL signal receiver SLOT slot 自动 1 2 使用 lambd
  • 模板类与函数

    模板类与函数 普通函数 参数和返回值是模板类的实例化版本 函数模板 参数和返回值是某种的模板类 函数模板 参数和返回值是任意类型 支持普通类和模板类和其它类型 模板类可以用于函数的参数和返回值 有三种形式 普通函数 参数和返回值是模板类的实
  • 运用Cookie技术,统计访问次数以及上次访问时间。

    package servlet import java io IOException import java io PrintWriter import java text SimpleDateFormat import java util