动态网站开发讲课笔记08:Cookie案例演示
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信息,并在浏览器显示 -
查看控制台输出信息
上一篇: 国外IT网站
下一篇: 动态网站开发讲课笔记