JavaWeb 案例3— Cookie案例
2021/8/19 11:06:17
本文主要是介绍JavaWeb 案例3— Cookie案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
案例一:记住用户登录时间案例
1、需求:
1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串
2、分析:
1. 可以采用Cookie来完成
2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
2.1 有:不是第一次访问
1. 响应数据:欢迎回来,您上次访问时间为:2019年10月4日11:50:20
2. 写回Cookie:lastTime=2019年10月4日11:50:01
2.2 没有:是第一次访问
1. 响应数据:您好,欢迎您首次访问
2. 写回Cookie:lastTime=2019年10月4日11:50:01
3、代码实现:
1 import javax.servlet.ServletException; 2 import javax.servlet.annotation.WebServlet; 3 import javax.servlet.http.Cookie; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import java.io.IOException; 8 import java.net.URLDecoder; 9 import java.net.URLEncoder; 10 import java.text.SimpleDateFormat; 11 import java.util.Date; 12 13 /** 14 记住用户登录时间案例 15 */ 16 @WebServlet("/cookieservlet") 17 public class cookieservlet extends HttpServlet { 18 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 19 // 设置响应消息体的数据格式以及编码 20 response.setContentType("text/html;charset=utf-8"); 21 22 //1 获取所有 cookie 23 Cookie[] cookies = request.getCookies(); 24 boolean flag = false; // 默认没有 cookie 为 lastTime 25 // 2.遍历cookie 数组 26 if (cookies != null && cookies.length > 0) { 27 for (Cookie cookie : cookies) { 28 // 3 获取所有的cookie 名称 29 String name = cookie.getName(); 30 // 4.判断名称是否是 lastTime 31 if("lastTime".equals(name)) { 32 // 有 cookie,不是第一次访问 33 flag = true; 34 35 // 获取 cookie 的 value 36 // 响应数据 37 // 获取 cookie 的value,s时间 38 String value = cookie.getValue(); 39 40 System.out.println("解码前:"+value); 41 // URL 解码 42 value = URLDecoder.decode(value, "utf-8"); 43 System.out.println("解码后:"+value); 44 45 46 //设置cookie 的 value 47 // 获取当前时间的字符串,重新设置 cookie 值,重新发送cookie 48 49 Date date = new Date(); 50 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 51 String str_date = sdf.format(date); 52 53 System.out.println("编码前:"+str_date); 54 //URL 编码 55 str_date = URLEncoder.encode(str_date, "utf-8"); 56 System.out.println("编码后:"+str_date); 57 58 cookie.setValue(str_date); 59 60 // 设置 cookie的存活时间 61 cookie.setMaxAge(60*60); 62 response.addCookie(cookie); 63 64 65 response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>"); 66 67 break; 68 } 69 } 70 } 71 72 if(cookies == null || cookies.length==0 || flag == false) { 73 // 没有,第一次访问 74 75 //设置cookie 的 value 76 // 获取当前时间的字符串,设置cookie值,发送cookie 77 78 Date date = new Date(); 79 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 80 String str_date = sdf.format(date); 81 Cookie cookie = new Cookie("lastTime",str_date); 82 83 // 解决时间里面有特殊字符,使用 URL 编码 84 System.out.println("编码前:"+str_date); 85 //URL 编码 86 str_date = URLEncoder.encode(str_date, "utf-8"); 87 System.out.println("编码后:"+str_date); 88 89 cookie.setValue(str_date); 90 91 // 设置 cookie的存活时间 92 cookie.setMaxAge(60*60); 93 response.addCookie(cookie); 94 95 response.getWriter().write("<h1>欢迎您首次访问</h1>"); 96 } 97 } 98 99 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 100 this.doPost(request, response); 101 } 102 }
案例二:
这篇关于JavaWeb 案例3— Cookie案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器