Java——cookie简单案例

案例:记住上一次访问时间

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

2. 分析:
		1. 可以采用Cookie来完成
		2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
				1. 有:不是第一次访问
					1. 响应数据:欢迎回来,您上次访问时间为:
					2. 写Cookie:lastTime
				2. 没有:是第一次访问
					1. 响应数据:您好,欢迎您首次访问
					2. 写Cookie:lastTime

1、假如存在cookie,不是第一次访问
1.1、获取cookie并遍历

//1、获取所有cookie
		Cookie[] cookies=request.getCookies();
		boolean flag=false;//没有cookie为lastTime
		//2、遍历cookie数组
		if(cookies!=null && cookies.length>0) {
			for(Cookie cookie:cookies) {
			}
		}

1.2、在前端显示出上次访问时间,并记录下这次访问时间添加至cookie中,改变cookie时间,设置cookie存活时间

   //获取cookie的名称
				String name=cookie.getName();
				//判断名称是否是lastTime
				if("lastTime".equals(name)) {
					//有该cookie不是第一次访问
					flag=true;//有cookie为lastTime
				
				//响应数据
				//获取cookie的value时间
				String value=cookie.getValue();
				System.out.println("解码前:"+value);
				//URL解码
				value=URLDecoder.decode(value, "utf-8");
				System.out.println("解码后:"+value);
				response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>");
				
				//设置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*24*30);//一个月
				//加入当前cookie请求时间
				response.addCookie(cookie);
				
				break;
			}

2、不存在cookie,第一次访问
记录当前时间添加至cookie中即可,设置cookie存活时间

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);
				System.out.println("编码前:"+str_date);
				//URL编码
				str_date=URLEncoder.encode(str_date, "utf-8");
				System.out.println("编码后:"+str_date);
				Cookie cookie=new Cookie("lastTime",str_date);
				//设置cookie存活时间
				cookie.setMaxAge(60*60*24*30);//一个月
				response.addCookie(cookie);
				response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
			}

所有代码和结果图

package cookie;

import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
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;

@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(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) {
				//获取cookie的名称
				String name=cookie.getName();
				//判断名称是否是lastTime
				if("lastTime".equals(name)) {
					//有该cookie不是第一次访问
					flag=true;//有cookie为lastTime
					
					//响应数据
					//获取cookie的value时间
					String value=cookie.getValue();
					System.out.println("解码前:"+value);
					//URL解码
					value=URLDecoder.decode(value, "utf-8");
					System.out.println("解码后:"+value);
					response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>");
					
					//设置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*24*30);//一个月
					//加入当前cookie请求时间
					response.addCookie(cookie);
					
					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);
				System.out.println("编码前:"+str_date);
				//URL编码
				str_date=URLEncoder.encode(str_date, "utf-8");
				System.out.println("编码后:"+str_date);
				Cookie cookie=new Cookie("lastTime",str_date);
				//设置cookie存活时间
				cookie.setMaxAge(60*60*24*30);//一个月
				response.addCookie(cookie);
				response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
			}
		}
	}

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

}

首次访问
用手机看下时间,现在时间为2019年05月19日 20:53:35
在这里插入图片描述等一分钟再次尝试,就看到自己上次的访问时间,差别很小,估计是人为误差
在这里插入图片描述
总结:在输出时间时,中间有一个空格,导致报错了,原来tomcat8以后虽然支持中文,但是特殊字符(至少空格)还是不支持,如果自己去试就会发现会报一个[32]的错误,代表的是ASCII表中的空格定义,所以还是需要使用URL编码和解码

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第1篇 基础知识 1.初识PHP(教学录像:23分42秒) 1.1PHP概述 1.2扩展库 1.3前期准备工作 1.4网站建设的基本流程 1.5PHP的学习资源 1.6如何学好PHP 2.PHP环境搭建和开发工具(教学录像:36分3秒) 2.1PHP开发环境和准备工作 2.2Windows下Apache+MySQL+PHP的安装 2.3在Windows下配置Apache+php5 2.4在Windows下架设IIS和PHP1 2.5Linux下的服务器环境 2.6Windows下使用组合包 2.7PHP常用开发工具 2.8第一个PHP实例 3.PHP语言基础(教学录像:49分19秒) 3.1PHP标记风格 3.2PHP注释的应用 3.3PHP的数据类型 3.4PHP常量 3.5PHP变量 3.6PHP运算符 3.7PHP的表达式 3.8PHP函数 3.9PHP编码规范 4.流程控制语句(教学录像:31分10秒) 4.1条件控制语句 4.2循环控制语句 字符串操作(教学录像:1小时18分13秒) 5.1字符串简介 5.2单引号和双引号的区别 5.3字符串的连接符 5.4字符串操作 正则表达式(教学录像:28分34秒) 6.1什么是正则表达式 6.2正则表达式语法规则 6.3POSIX扩展正则表达式函数 6.4PCRE兼容正则表达式函数 PHP数组(教学录像:56分29秒) 7.1了解数组 7.2声明数组 7.3数组的类型 7.4输出数组 7.5数组的构造 7.6遍历数组 7.7合并数组 7.8字符串与数组的转换 7.9统计数组元素个数 7.10数组排序 PHP与Web页面交互(教学录像:1小时4分33秒) 8.1Web页表单元素的组成 8.2在普通的Web页中插入表单 8.3获取表单数据的两种方法 8.4PHP传参的常用方法 8.5在Web页中嵌入PHP脚本 8.6在PHP中获取表单数据 8.7对URL传递的参数进行编码解码 8.8PHP与Web表单的综合应用 PHP与JavaScript交互(教学录像:1小时11分36秒) 9.1了解JavaScript 9.2JavaScript语言基础 9.3自定义函数 9.4JavaScript流程控制语句 9.5JavaScript事件 9.6JavaScript脚本嵌入方式 9.7在PHP中调用JavaScript脚本 日期和时间(教学录像:27分16秒) 10.1日期和时间的概述 10.2处理日期和时间 10.3Unix时间戳 10.4系统时区设置 10.5开发中遇到的日期和时间问题 第2篇 核心技术 Cookie与Seession(教学录像:35分40秒) 11.1Cookie管理 11.2Session管理 11.3Cookie与Session的比较 图形图像处理技术(教学录像:36分13秒) 12.1了解GD库 12.2在PHP中设定图像支持 12.3图形图像的典型应用 12.4Jpgraph的安装与配置 文件系统(教学录像:52分24秒) 13.1文件目录概述 13.2文件处理 13.3目录处理 13.4文件处理的高级应用 13.5文件上传 面向对象(教学录像:30分18秒) 14.1面向对象的基本概念 14.2PHP与对象 14.3PHP对象的高级应用 PHP加密技术(教学录像:34分45秒) 15.1加密技术概述 15.2PHP加密函数 15.3PHP加密扩展库 MySQL数据库基础(教学录像:58分50秒) 16.1MYSQL简介 16.2MySQL的特点 16.3启动、连接、断开和停止MySQL服务器 16.4MySQL数据库操作 16.5MySQL数据表操作 16.6MySQL语句操作 phpMyAdmin图形化管理工具(教学录像:57分47秒) 17.1了解PHPMyAdmin图形化管理工具 17.2phpMyAdmin的安装和配置 17.3phpMyAdmin的使用 PHP操作MySQL数据库(教学录像:1小时17分40秒) 18.1PHP访问MySQL数据库的一般步骤 18.2PHP操作MySQL数据库的方法 18.3PHP操作MySQL数据库 ADODB类库(教学录像:56分15秒) 19.1什么是ADODB 19.2为什么使用ADODB 19.3ADODB支持的数据库 19.4下载与安装ADODB 19.5使用ADODB操作MySQL 19.6ADODB类库 19.7ADODB类库应用 程序调试及错误处理(教学录像:1小时19秒) 20.1基本调试流程 20.2PHP中的错误类型 20.3PHP的基本调试策略 20.4解决数据库乱码问题 第3篇 高级应用 PHP网络开发(教学录像:42分33秒) 21.1电子邮件的原理 21.2系统的配置需求(SMTP和POP3服务器安装配置) 21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒) 22.1XML的概述 22.2XML语法 22.3在PHP中创建XML文档 22.4SimpleXML 22.5动态创建XML文档 PHP与LDAP技术(教学录像:25分27秒) 23.1LDAP简介 23.2LDAP服务器的安装与配置 23.3PHP与LDAP PHP与Ajax技术(教学录像:32分47秒) 24.1了解AJAX 24.2AJAX使用的技术 24.3Ajax开发需要注意的几个问题 24.4在PHP中应用AJAX技术的典型应用 Web Service与SOAP技术(教学录像:31分1秒) 25.1Web Service技术 25.2SOAP协议 25.3WSDL文档 25.4UDDI规范 25.5PHP内置SOAP类库 25.6使用NuSOAP类包 Smarty模板技术(教学录像:38分44秒) 26.1Smarty简介 26.2Smarty的安装配置 26.3Smarty模板设计 26.4Smarty程序设计 第4篇 项目实战 应用Smarty模板开发电子商务网站(教学录像:2小时10分54秒) 27.1系统分析 27.2系统设计 27.3软件开发环境 27.4数据库与数据表设计 27.5搭建系统框架 27.6公共文件设计 27.7前台首页设计 27.8登录模块设计 27.9会员信息模块设计 27.10商品显示模块设计 27.11购物车模块设计 27.12收银台模块设计 27.13后台首页设计 27.14类别管理模块 27.15订单管理模块设计 27.16开发的常见问题 27.17发布网站
第1篇 基础知识 1.初识PHP(教学录像:23分42秒) 1.1PHP概述 1.2扩展库 1.3前期准备工作 1.4网站建设的基本流程 1.5PHP的学习资源 1.6如何学好PHP 2.PHP环境搭建和开发工具(教学录像:36分3秒) 2.1PHP开发环境和准备工作 2.2Windows下Apache+MySQL+PHP的安装 2.3在Windows下配置Apache+php5 2.4在Windows下架设IIS和PHP1 2.5Linux下的服务器环境 2.6Windows下使用组合包 2.7PHP常用开发工具 2.8第一个PHP实例 3.PHP语言基础(教学录像:49分19秒) 3.1PHP标记风格 3.2PHP注释的应用 3.3PHP的数据类型 3.4PHP常量 3.5PHP变量 3.6PHP运算符 3.7PHP的表达式 3.8PHP函数 3.9PHP编码规范 4.流程控制语句(教学录像:31分10秒) 4.1条件控制语句 4.2循环控制语句 字符串操作(教学录像:1小时18分13秒) 5.1字符串简介 5.2单引号和双引号的区别 5.3字符串的连接符 5.4字符串操作 正则表达式(教学录像:28分34秒) 6.1什么是正则表达式 6.2正则表达式语法规则 6.3POSIX扩展正则表达式函数 6.4PCRE兼容正则表达式函数 PHP数组(教学录像:56分29秒) 7.1了解数组 7.2声明数组 7.3数组的类型 7.4输出数组 7.5数组的构造 7.6遍历数组 7.7合并数组 7.8字符串与数组的转换 7.9统计数组元素个数 7.10数组排序 PHP与Web页面交互(教学录像:1小时4分33秒) 8.1Web页表单元素的组成 8.2在普通的Web页中插入表单 8.3获取表单数据的两种方法 8.4PHP传参的常用方法 8.5在Web页中嵌入PHP脚本 8.6在PHP中获取表单数据 8.7对URL传递的参数进行编码解码 8.8PHP与Web表单的综合应用 PHP与JavaScript交互(教学录像:1小时11分36秒) 9.1了解JavaScript 9.2JavaScript语言基础 9.3自定义函数 9.4JavaScript流程控制语句 9.5JavaScript事件 9.6JavaScript脚本嵌入方式 9.7在PHP中调用JavaScript脚本 日期和时间(教学录像:27分16秒) 10.1日期和时间的概述 10.2处理日期和时间 10.3Unix时间戳 10.4系统时区设置 10.5开发中遇到的日期和时间问题 第2篇 核心技术 Cookie与Seession(教学录像:35分40秒) 11.1Cookie管理 11.2Session管理 11.3Cookie与Session的比较 图形图像处理技术(教学录像:36分13秒) 12.1了解GD库 12.2在PHP中设定图像支持 12.3图形图像的典型应用 12.4Jpgraph的安装与配置 文件系统(教学录像:52分24秒) 13.1文件目录概述 13.2文件处理 13.3目录处理 13.4文件处理的高级应用 13.5文件上传 面向对象(教学录像:30分18秒) 14.1面向对象的基本概念 14.2PHP与对象 14.3PHP对象的高级应用 PHP加密技术(教学录像:34分45秒) 15.1加密技术概述 15.2PHP加密函数 15.3PHP加密扩展库 MySQL数据库基础(教学录像:58分50秒) 16.1MYSQL简介 16.2MySQL的特点 16.3启动、连接、断开和停止MySQL服务器 16.4MySQL数据库操作 16.5MySQL数据表操作 16.6MySQL语句操作 phpMyAdmin图形化管理工具(教学录像:57分47秒) 17.1了解PHPMyAdmin图形化管理工具 17.2phpMyAdmin的安装和配置 17.3phpMyAdmin的使用 PHP操作MySQL数据库(教学录像:1小时17分40秒) 18.1PHP访问MySQL数据库的一般步骤 18.2PHP操作MySQL数据库的方法 18.3PHP操作MySQL数据库 ADODB类库(教学录像:56分15秒) 19.1什么是ADODB 19.2为什么使用ADODB 19.3ADODB支持的数据库 19.4下载与安装ADODB 19.5使用ADODB操作MySQL 19.6ADODB类库 19.7ADODB类库应用 程序调试及错误处理(教学录像:1小时19秒) 20.1基本调试流程 20.2PHP中的错误类型 20.3PHP的基本调试策略 20.4解决数据库乱码问题 第3篇 高级应用 PHP网络开发(教学录像:42分33秒) 21.1电子邮件的原理 21.2系统的配置需求(SMTP和POP3服务器安装配置) 21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒) 22.1XML的概述 22.2XML语法 22.3在PHP中创建XML文档 22.4SimpleXML 22.5动态创建XML文档 PHP与LDAP技术(教学录像:25分27秒) 23.1LDAP简介 23.2LDAP服务器的安装与配置 23.3PHP与LDAP PHP与Ajax技术(教学录像:32分47秒) 24.1了解AJAX 24.2AJAX使用的技术 24.3Ajax开发需要注意的几个问题 24.4在PHP中应用AJAX技术的典型应用 Web Service与SOAP技术(教学录像:31分1秒) 25.1Web Service技术 25.2SOAP协议 25.3WSDL文档 25.4UDDI规范 25.5PHP内置SOAP类库 25.6使用NuSOAP类包 Smarty模板技术(教学录像:38分44秒) 26.1Smarty简介 26.2Smarty的安装配置 26.3Smarty模板设计 26.4Smarty程序设计 第4篇 项目实战 应用Smarty模板开发电子商务网站(教学录像:2小时10分54秒) 27.1系统分析 27.2系统设计 27.3软件开发环境 27.4数据库与数据表设计 27.5搭建系统框架 27.6公共文件设计 27.7前台首页设计 27.8登录模块设计 27.9会员信息模块设计 27.10商品显示模块设计 27.11购物车模块设计 27.12收银台模块设计 27.13后台首页设计 27.14类别管理模块 27.15订单管理模块设计 27.16开发的常见问题 27.17发布网站

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值