JavaEE实例:利用Cookie制作记录访问时间功能

Cookie是由服务器产生,通过请求头读取、响应头保存在浏览器目录的键值对,用于在多次访问之间建立联系。

首先需要建一个CookieServlet类,继承HttpServlet类

public class CookieServlet extends HttpServlet

重写doGet方法,来处理Get请求

首先需要一个日期格式化工具,来将当前系统时间按需转为字符串:

SimpleDateFormat sdf = new SimpleDateFormat("yy年MM月dd日HH点mm分ss秒");

创建Cookie对象,第一个参数为键名,第2个参数是当前系统时间

Cookie ck = new Cookie("LastVisit",sdf.format(new Date()));

设置Cookie的有效时间,参数是int类型的,代表Cookie会在客户端保存多少秒。

如果是负数,代表Cookie在客户端内存中保存。

如果是0,代表浏览器关闭就失效。

如果是正数,代表多少秒后删除,这里为了模拟永久保存的效果,我们把它设为int类型的最大值(这个数换算成年大概是68年)

ck.setMaxAge(2147483647);

将Cookie加到响应头中

resp.addCookie(ck);

定义一个由初始值的字符串变量,用于保存要想浏览器输出的结果

String lastVisit = "这是您第一次访问本站";

获取请求头中的所有Cookie(这里假设没有其他Cookie)

Cookie[] cks = req.getCookies();

遍历得到的Cookie数组,找到LastVisit键名的值

if(cks!=null) {
            for(Cookie ck1 :cks) {
                if(ck1.getName().equals("LastVisit")) {
                    lastVisit = ck1.getValue();
                }
            }
        }

获得流对象,并向浏览器输出结果(这里注意一定要在获得流之前设置编码方式,否则会出现乱码)

resp.setContentType("text/html;charset = utf-8");
        PrintWriter pw = resp.getWriter();
        if(cks!=null) {
            pw.println("上次访问时间:");
        }
        
        pw.println(lastVisit);

配置web.xml文件,将上面写好的Servlet的虚拟路径设为cs

  <servlet>
    <servlet-name>cs</servlet-name>
    <servlet-class>com.MyWeb.demo01.CookieServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>cs</servlet-name>
    <url-pattern>/cs</url-pattern>
  </servlet-mapping>

启动服务器,地址栏输入localhost:8080/项目名称/cs

第一次访问该资源时,由于请求头中没有对应的Cookie,所以会显示“第一次访问”

 

 

 第二次访问时,就会显示上一次访问的时间

 

 通过开发人员工具的网络选项卡可以看到请求和响应的详细信息

posted @ 2021-03-07 10:49  lucascube  阅读(266)  评论(0)    收藏  举报