会话技术_Cookie_案例_分析与会话技术_Cookie_案例_代码实现

会话技术_Cookie_案例_分析

        Cookie案例分析

           1.可以采纳Cookie来完成

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

                1.有:不是第一次访问 

                    1,响应数据:你好,欢迎回来,您上次访问的时间为=2023年2月9日14:22:20

                    2.写回Cookie:lastTime的Cookie=2023年2月9日14:22:20

                2.没有:是第一次访问 

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

                    2.写回Cookie:lastTime的Cookie=2023年2月9日14:22:20

             案例需求:

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

 

会话技术_Cookie_案例_代码实现

package bd.xueqiang.Cookie;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/cookieTest")
/**
 *  2.在服务器中的Servlet判断是否有一个名为lastTime的Cookie
 *
 *                 1.有:不是第一次访问
 *
 *                     1,响应数据:你好,欢迎回来,您上次访问的时间为=2023年2月9日14:22:20
 *                     2.写回Cookie:lastTime的Cookie=2023年2月9日14:22:20
 *                 2.没有:是第一次访问 
 *                     1.响应数据:您好,欢迎您首次访问
 *
 *                     2.写回Cookie:lastTime的Cookie=2023年2月9日14:22:20
 */
public class CookieTest extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置响应的消息体的数据格式以及编码
        response.setContentType("text/html;charset=utf-8");

        //1.获取所有Cookie
        Cookie[] cookies = request.getCookies();
        boolean flag = false; //没有Cookie为lastTime
        //2.遍历Cookie数组
        if (cookies != null && cookies.length >0){
            for (Cookie cookie : cookies) {
                //3.获取Cookie的名称
                String name = cookie.getName();
                //4.判断名称是否是:lastTime
                if ("lastTime".equals(name)){
                    //有该Cookie,不是第一次访问

                        flag = true; //有lastTime的Cookie

                    //设置Cookie的value
                    //获取当前时间的字符串,重新设置Cookie的值,重写发送Cookie
                    Date date = new Date();
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String format = simpleDateFormat.format(date);
                    System.out.println("编码前:"+format);
                    //URL编码
                    format = URLEncoder.encode(format, "utf-8");
                    System.out.println("编码后:"+format);
                    cookie.setValue(format);
                    //设置Cookie的存活时间
                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
                    response.addCookie(cookie);

                    //响应数据
                    //获取Cookie的value,时间
                    String value = cookie.getValue();
                    System.out.println("解码前:"+value);
                    value = URLDecoder.decode(value,"UTF-8");
                    System.out.println("解码后:"+value);

                    response.getWriter().write("<h1>欢迎回来,您上次访问的时间为:"+value+"</h1>");

                    break;
                }
            }
        }
        if (cookies == null || cookies.length == 0 || flag == false){
                  //没有,第一次访问

            //设置Cookie的value
            //获取当前时间的字符串,重新设置Cookie的值,重写发送Cookie
            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String format = simpleDateFormat.format(date);
            System.out.println("编码前:"+format);
            //URL编码
            format = URLEncoder.encode(format, "utf-8");
            System.out.println("编码后:"+format);
            Cookie cookie = new Cookie("lastTime",format);
            //设置Cookie的存活时间
            cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
            response.addCookie(cookie);

            response.getWriter().write("<h1>欢迎您首次访问</h1>");
        }

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

 

 

 

再次访问

 

 

 

posted @ 2023-02-09 16:02  zj勇敢飞,xx永相随  阅读(15)  评论(0编辑  收藏  举报