动态网站开发讲课笔记08:Cookie案例演示

该文章演示了如何使用JavaServlet处理Cookie来显示用户上次访问网站的时间。通过创建LastAccessServlet类,设置和读取Cookie,实现访问时间的记录和展示。用户首次访问时保存访问时间,之后访问则从Cookie中读取并更新时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cookie案例演示 - 显示用户上次访问时间

1、创建Web项目

  • Web项目 - CookieDemo
    在这里插入图片描述
    在这里插入图片描述

2、修改Artifact名称,重新部署项目

  • 在项目结构窗口里修改Artifact名称
    在这里插入图片描述
  • 编辑服务器配置,重新部署项目,URL变成http://localhost:8080/CookieDemo/
    在这里插入图片描述
  • 修改首页
    在这里插入图片描述
  • 启动服务器,查看效果
    在这里插入图片描述

3、创建LastAccessServlet类

  • 创建net.hdl.servlet包,然后在里面创建LastAccessServlet
    在这里插入图片描述
package net.hdl.servlet;

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.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 功能:显示用户上次访问时间
 * 作者:胡德兰
 * 日期:2023年04月21日
 */
@WebServlet(name = "LastAccessServlet", value = "/LastAccessServlet")
public class LastAccessServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置响应对象内容类型(网页、编码),避免中文乱码
        response.setContentType("text/html; charset=utf-8");
        // 获取打印输出流
        PrintWriter out = response.getWriter();
        // 获取所有cookie
        Cookie[] cookies = request.getCookies();
        // 定义标志变量isFirstAccess
        boolean isFirstAccess = true;
        // 判断cookies是否为空
        if (cookies.length > 0 && cookies != null) {
            // 遍历cookies数组
            for (Cookie cookie : cookies) {
                // 获取cookie的名称
                String name = cookie.getName();
                // 判断cookie名称是否为`lastTime`
                if (name.equals("lastTime")) {
                    // 用户不是第一次访问
                    isFirstAccess = false;
                    // 获取cookie的值(上次访问时间)
                    String value = cookie.getValue();
                    // 控制台输出解码前的数据
                    System.out.println("解码前:" + value);
                    // 对cookie值进行URL解码
                    value = URLDecoder.decode(value, "utf-8");
                    // 控制台输出解码后的数据
                    System.out.println("解码后:" + value);
                    // 在页面显示用户上次访问时间
                    out.print("欢迎回来,您上次访问时间:" + value);
                    // 获取当前时间字符串
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String strDate = sdf.format(date);
                    // 控制台输出编码前的日期数据
                    System.out.println("编码前:" + strDate);
                    // 对日期数据进行URL编码
                    strDate = URLEncoder.encode(strDate, "utf-8");
                    // 控制台输出编码后的日期数据
                    System.out.println("编码后:" + strDate);
                    // 设置cookie的值
                    cookie.setValue(strDate);
                    // 设置cookie的存活时间(以秒为单位)
                    cookie.setMaxAge(30 * 24 * 60 * 60);  // 一个月
                    // 加入cookie,让其生效
                    response.addCookie(cookie);
                }
            }
        }

        // 第一次访问
        if (isFirstAccess) {
            // 获取当前时间字符串
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String strDate = sdf.format(date);
            // 控制台输出编码前的日期数据
            System.out.println("编码前:" + strDate);
            // 对日期数据进行URL编码
            strDate = URLEncoder.encode(strDate, "utf-8");
            // 控制台输出编码后的日期数据
            System.out.println("编码后:" + strDate);
            // 创建一个cookie
            Cookie cookie = new Cookie("lastTime", strDate);
            // 设置cookie的值
            cookie.setValue(strDate);
            // 设置cookie的存活时间(以秒为单位)
            cookie.setMaxAge(30 * 24 * 60 * 60);  // 一个月
            // 加入cookie,让其生效
            response.addCookie(cookie);
            // 在页面显示欢迎用户首次访问信息
            out.print("您好,欢迎您首次访问本网站~");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
}


4、启动服务器,查看结果

启动服务器,访问http://localhost:8080/CookieDemo/LastAccessServlet

在这里插入图片描述

  • 查看控制台输出信息
    在这里插入图片描述

  • 刷新访问地址http://localhost:8080/CookieDemo/LastAccessServlet,浏览器显示了用户的上次访问时间,这是因为用户第一次访问LastAccessServlet时,LastAccessServlet向浏览器发送并保存用户访问时间的Cookie信息。第二次访问LastAccessServlet时,服务器读取该Cookie信息,并在浏览器显示
    在这里插入图片描述

  • 查看控制台输出信息
    在这里插入图片描述

本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问、会员注册和管理设计与数据获取、网上社区设计与PHP数据库访问、网上购书与PHP面向对象技术、网站优化与PHP的高级功能等,本书内容系统全面,案例典型实用,讲述直观详尽,非常适合动态网页设计与制作的初学者使用,还可作为高等院校教材和“实用型”人才培训教材。 目录 第1章 动态网站设计概述 1.1 动态网站的特点 1.2 动态网站的运行机制 1.2.1 域名 1.2.2 网页 1.2.3 浏览器 1.2.4 服务器 1.3 动态网站的规划 1.3.1 确定网站的类型 1.3.2 确定网站的主题 1.3.3 确定网站的整体风格 1.3.4 确定网站的内容 1.3.5 规划界面 1.3.6 规划站点的目录结构和链接结构 1.3.7 编写网站策划书 1.4 动态网站开发前的准备 1.4.1 申请域名 1.4.2 接入Internet 1.4.3 选择软硬件平台 1.4.4 选择网站建设服务商 第2章 动态网站编程环境 2.1 动态网页编程环境的构成要素 2.1.1 操作系统 2.1.2 服务器端程序 2.1.3 程序语言 2.1.4 数据库 2.1.5 基于PHP常见动态网站开发环境 2.2 安装和配置Apache 2.2.1 安装Apache前的准备 2.2.2 安装Apache 2.2 13测试Apache 2.2.4 配置Apache 2.2.5 在Windows上管理Apache 2.3 安装和配置PHP 2.3.1 安装PHP前的准备 2.3.2 安装PHP 2.3.3 配置PHP 2.3.4 测试PHP 2.4 安装和配置MySQL 2.4.1 安装MySQL,前的准备 2.4.2 安装MySQL 2.4.3 配置MySQL 2.4.4 在Windows上手动启动和停止MySQL 2.4.5 安装phpMyAdmin 2.5 AppServ组件安装 2.5.1 安装AppSery前的准备 2.5.2 安装。AppSery 2.5.3 测试AppSery 2.5.4 配置Apache 2.5.5 修改MySQL服务器的密码 2.6 PHP的集成开发环境 2.6.1 Dream weaver开发工具 2.6.2 Eclipse开发工具 2.6.3 其他开发工具 第3章 网站主页设计与PHP基础 3.1 网站主页的设计 3.1.1 主页中的页面元素, 3.1.2 规划主页的结构 3.1.3 布局页面版式 3.1.4 用Fireworks创建网页模型 3.2 网站主页的实现 3.2.1 在Dream weaver中创建网站 3.2.2 布局页面元素的样式 3.2.3 实现主页的结构 3.2.4 编辑主页的栏目内容 3.3 网站主页中的链接策略 3.4 PHP语言基础 3.4.1 PHP的程序结构 3.4.2 PHP的句法结构 3.4.3 PHP的数据类型 3.4.4 PHP的控制语句 第4章 网站计数器设计与PHP文件访问 4.1 网站计数器的设计 4.1.1 系统架构 4.1.2 系统设计 4.2 网站计数器的实现 4.2.1 文本输出的网页计数器 4.2.2 图片输出的网页计数器 4.2.3 调试代码 4.3 PHP的函数 4.3.1 PHP函数概述 4.3.2 白定义函数 4.3.3 PHP内置函数 4.4 PHP访问文件 4.4.1 PHP支持的文件系统 4.4..2 PHP访问文件的方法 4.4.3.PHP访问目录 4.5 文件管理器 第5章 会员注册和管理设计与数据获取 5.1 会员注册和管理概述 5.2 会员注册和管理设计 5.2.1 系统架构 5.2.2 系统设计 5.3 注册模块的实现 5.3.1 页面样式表 5.3.2 网页的头部、尾部和数据库连接文件 5.3.3 注册的主页和处理程序 5.3.4 用户申请购书卡页和处理程序 5.3.5 注册用户资料页与处理程序 5.3.6 调试代码 5.4 会员管理模块的实现 5.4.1 页面样式表 5.4.2 网页的头部、尾部和连接数据库 5.4.3 会员管理的主页 5.4.4 用户分级登录页和处理程序 5.4.5 用户购书卡专区页和处理程序 5.4.6 会员修改资料页与处理程序 5.4.7 会员找回密码页与处理程序 5.4..8 购书卡管理页与处理程序 5.4.9 调试代码 5.5 表单数据处理 5.5.1 PHP与表单 5.5.2 表单数据的采集 5.5.3 表单数据处理描述 5.6 cookie与会话管理 5.6.1 数据传递概述 5.6.2 cookie 5.6.3 会话管理 第6章 网上社区设计与PHP数据库访问 6.1 网上社区概述 6.2 留言板的设计 6.2.1 留言板的架构 6.2.2 留言板的设计描述 6.3 留言板的实现 6.3.1 网页的头部、尾部和系统配置文件 6.3.2 留言板的主页——欢迎页 6.3.3 写留言页和回复留言 6.3.4 浏览留言主题页 6.3.5 浏览主题留言页 6.3.6 管理员登录页 6.3.7 屏蔽和删除留言页 6.3.8 调试代码 6.4 聊天室的设计 6.4.1 聊天室的架构 6.4.2 聊天室的设计描述 6.5 聊天室的实现 6.5.1 网页的头部、尾部和系统配置文件 6.5.2 聊天室的主页——登录页 6.5.3 聊天室页 6.5.4 浏览聊天信息页 6.5.5 离开页 6.5.6 注销页 6.5.7 调试代码 6.6 PHP访问数据库 6.6.1 PHP访问数据库的机制 6.6.2 连接数据库服务器 6.6.3 PHP数据库管理函数 6.6.4 PHP查询数据函数 6.6.5 其他数据管理工具 第7章 网上购书与PHP面向对象技术 7.1 网上购书系统分析 7.1.1 系统工作流程分析 7.1.2 系统功能模块分析 7.2 网上购书系统设计 7.2.1 模块的逻辑结构设计 7.2.2 数据库设计 7.2.3 数据操作类设计 7.2.4 界面设计 7.3 网上购书系统实现 7.3.1 数据操作类 7.3.2 图书查询 ’7.3.3 图书显示处理 7.3.4 购物车 7.3.5 订单处理 7.3.6 调试代码 7.4 PHP面向对象技术 7.4.1 基本概念 7.4.2 定义类 7.4.3 创建对象 7.4.4 使用对象的属性和方法 7.4..5 对象的操作 第8章 网站优化与PHP的高级功能 8.1 用户注册安全管理 8.1.1 用户注册安全管理的策略 8.1.2 优化用户注册页面 8.1.3 PHP的GD函数库 8.1.4 图片缩略图 8.2 图像文件上传处理 8.2.1 网站图像存储策略 8.2.2 上传图书封面图像 8.2.3 PHP文件上传处理 8.3 电子邮件处理 8.3.1 PHP电子邮件处理概述 8.3.2 向客户发送邮件 8.3.3 PHP发送电子邮件的方式 8.4 正则表达式 8.4.1 正则表达式简介 8.4.2 常用表单项验证 8.4.3 正则表达式的法则 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值