zoukankan      html  css  js  c++  java
  • Java-记住上一次访问时间案例

    记住上一次访问时间

    1.需求:
        1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问
        2.如果不是第一次访问,则提示:欢迎回来,您上次访问的时间为:显示字符串
    2.分析
        1.可以采用cookie来完成
        2.在服务器中的Servlet判断是否有一哥们名为lastTime的cookie
            1.有:不是第一次访问
                1.响应数据:欢迎回来,您上次访问时间为:2018年6月10日11:20:22
                2.写回Cookie:lastTime=2018年6月10日11:20:01
            2.没有:第一次访问
                1.响应数据:您好,欢迎您首次访问
                2.写回Cookie:lastTime=2018年6月10日11:20:01
    

    代码如下

    package cn.itcast.cookie;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    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.net.URLDecoder;
    import java.net.URLEncoder;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.logging.SimpleFormatter;
    
    /**
    * Cookie快速入门
    * 在服务器中的Servlet判断是否有一哥们名为lastTime的cookie
    *             1.有:不是第一次访问
    *                 1.响应数据:欢迎回来,您上次访问时间为:2018年6月10日11:20:22
    *                 2.写回Cookie:lastTime=2018年6月10日11:20:01
    *             2.没有:第一次访问
    *                 1.响应数据:您好,欢迎您首次访问
    *                 2.写回Cookie:lastTime=2018年6月10日11:20:01
    */
    @WebServlet("/CookieTest")
    public class CookieTest extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置响应的消息体的数据格式以及编码
            response.setContentType("text/html;charset=utf-8");
        //获取所有Cookie
            Cookie[] cookies=request.getCookies();
            boolean flag=false;//没有cookie1为lastTime
            //设置cookie的value
            // 获取当前时间的字符串,重新设置cookie的值,重新发送cookie
            Date date=new Date();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String str_date=sdf.format(date);
            //url编码
            System.out.println("编码前:"+str_date);
            str_date= URLEncoder.encode(str_date,"utf-8");
            System.out.println("编码后:"+str_date);
            //遍历cookies数组
            if(cookies!=null&&cookies.length>0){
                for(Cookie cookie:cookies){
                    //获取cookie的名称
                    String name=cookie.getName();
                    //判断名称是否有:lastTime
                    if("lastTime".equals(name)){
                        //有该Cookie,不是第一次访问
                        flag=true;//有cookie1为lastTime
                        cookie.setValue(str_date);
                        //设置cookie的存活时间
                        cookie.setMaxAge(60*60*24*30);//一个月
                        response.addCookie(cookie);
    
                        //响应数据
    
                        //获取Cookie的value,时间
                        String value=cookie.getValue();
                        //url解码
                        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 cookie=new Cookie("lastTime",str_date);
                //设置cookie的存活时间
                cookie.setMaxAge(60*60*24*30);//一个月
                response.addCookie(cookie);
                response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
            }
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
  • 相关阅读:
    sql.srcipt
    sowmodaldialog
    4) 删除虚拟应用程序
    JavaScript读写Cookies
    第5章 脚本运行期库对象
    npm serve md 工具 [MD]
    cleanmark 清除格式 博客内容提取 [MD]
    Hex编码 十六进制编码
    Windows Server AppFabric(Codename:"Dublin&Velocity")介绍
    WF4设计器模型:编辑范围ModelEditingScope
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13042294.html
Copyright © 2011-2022 走看看