CookieDemo

需求:

1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎首次访问

2.如果不是第一次访问,则友好提示:欢迎回来,您上次访问时间为:显示时间字符串

 

分析:

1.可以采用Cookie来完成

2.在服务器中的Servlet判断是否有一个名为lastTime的cookie

  2.1   有Cookie则表示不是第一次访问

    1.响应数据 : 欢迎回来,您上次访问的时间为:2019年7月31日  xx:xx:xx

    2.写回Cookie : lastTime=2019年7月31日  xx:xx:xx

  2.2   没有Cookie则表示是第一次访问

    1.响应数据 : 您好,欢迎您首次访问

    2.写回Cookie : lastTime=2019年7月31日  xx:xx:xx

具体代码实现:

 

 1 package com.infosys.servlet;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.Cookie;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 import java.net.URLDecoder;
11 import java.net.URLEncoder;
12 import java.text.SimpleDateFormat;
13 import java.util.Date;
14 
15 @WebServlet("/CookieTest")
16 public class CookieTest extends HttpServlet {
17     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
18 
19         response.setContentType("text/html;charset=utf-8");
20 
21         Cookie[] cookies = request.getCookies();
22 
23         boolean flag = false;
24 
25         if (cookies != null && cookies.length > 0) {
26             for (Cookie cookie : cookies) {
27                 //3.获取cookie的名称
28                 String name = cookie.getName();
29                 if ("lastTime".equals(name)) {
30 
31                     flag = true;
32 
33                     Date data = new Date();
34                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:dd");
35                     String str_date = sdf.format(data);
36 
37                     System.out.println("编码之前" + str_date);
38                     str_date = URLEncoder.encode(str_date, "utf-8");
39                     System.out.println("编码之后" + str_date);
40                     cookie.setValue(str_date);
41                     cookie.setMaxAge(60 * 60 * 24 * 30);
42                     response.addCookie(cookie);
43 
44                     String value = cookie.getValue();
45                     value = URLDecoder.decode(value, "utf-8");
46                     response.getWriter().write("欢迎回来,您上次访问时间为" + value);
47 
48                     break;
49                 }
50             }
51         }
52 
53         if (cookies == null || cookies.length == 0 || flag == false) {
54             //没有cookie, 第一次访问
55             //设置cookie的value,或当前的时间字符串,重新发送cookie
56             Date data = new Date();
57             SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:dd");
58 
59             String str_date = sdf.format(data);
60 
61             System.out.println("编码之前" + str_date);
62             str_date = URLEncoder.encode(str_date, "utf-8");
63             System.out.println("编码之后" + str_date);
64 
65 
66             Cookie cookie = new Cookie("lastTime", str_date);
67             cookie.setValue(str_date);
68             //设置cookie的存活时间
69             cookie.setMaxAge(60 * 60 * 24 * 30);
70             response.addCookie(cookie);
71             response.getWriter().write("欢迎首次登陆");
72         }
73 
74     }
75 
76     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
77         this.doPost(request, response);
78     }
79 }

 

posted @ 2019-07-31 23:14  Courage.Kiven  阅读(213)  评论(0编辑  收藏  举报