我们来简单实现一个cookie。
一、简单介绍
Cookie 是一些数据, 存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。
Cookie 的作用就是用于解决 "如何记录客户端的用户信息":
- 当用户访问 web 页面时,他的名字可以记录在 cookie 中。
- 在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录
(博客园cookie界面)
二、简单实现
0.maven引入依赖
servlet和jsp的依赖
1.java代码编写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package com.lei; import javax.servlet.ServletException; 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.util.Date; public class CookieDemo01 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding( "utf-16" ); resp.setCharacterEncoding( "utf-16" ); PrintWriter out =resp.getWriter(); Cookie[] cookies=req.getCookies(); if (cookies!= null ) { out.write( "您上一次访问时间为:" ); for ( int i= 0 ;i< cookies.length;i++) { Cookie cookie=cookies[i]; if (cookie.getName().equals( "lastLoginTime" )) { long lastLoginTime=Long.parseLong(cookie.getValue()); Date date= new Date(lastLoginTime); out.write(date.toString()); } } } else { out.write( "first time come to this website!" ); } Cookie cookie= new Cookie( "lastLoginTime" ,System.currentTimeMillis()+ "" ); resp.addCookie(cookie); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } |
2.设置web-xml里面加入 servlet注册和映射
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee version = "4.0" metadata-complete = "true" > < servlet > < servlet-name >cookie</ servlet-name > < servlet-class >com.lei.CookieDemo01</ servlet-class > </ servlet > < servlet-mapping > < servlet-name >cookie</ servlet-name > < url-pattern >/cookie</ url-pattern > </ servlet-mapping > </ web-app > |
三、运行效果
第一次cookie数组为空 不显示登陆时间
按理说应该会显示else里面的内容first time come to this website!
但是显示的是
只是因为下面的第二张图 是因为浏览器(我的是edge浏览器)默认还有一个cookie
也就是说我们第一次在执行页面(如果是从8080页面输入url跳转的)时 有别的cookie存在
第二次才会显示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/201909/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)