• Servlet-Cookie对象


    概述

    servlet-api 4.0.1版本

    常用方法

    public Cookie(String name, String value) {...} // 构造具有指定名称和值的cookie
    
    public String getName() {...} // 返回cookie的名称。 创建后不能更改名称
    
    public String getValue() {...} // 获取此Cookie的当前值
    
    public void setValue(String newValue) {...} // 为该Cookie分配一个新值
    
    public void setMaxAge(int expiry) {...} // 设置此Cookie的最长使用期限(以秒为单位)
    
    public int getMaxAge() {...} // 获取此Cookie的最长使用期限(以秒为单位)
    
    public void setComment(String purpose) {...} // 指定描述cookie用途的注释
    
    public String getComment() {...} // 返回描述此cookie用途的注释;如果cookie没有注释,则返回null
    
    public void setDomain(String domain) {...} // 指定该cookie应在其中显示的域
    
    public String getDomain() {...} // 获取此Cookie的域名
    
    public void setPath(String uri) {...} // 指定客户端应向其返回cookie的cookie的路径
    
    public String getPath() {...} // 返回浏览器向其返回此cookie的服务器上的路径。 该cookie对服务器上的所有子路径可见
    
    public void setSecure(boolean flag) {...} // 向浏览器指示cookie是否仅应使用安全协议(例如HTTPS或SSL)发送
    
    public boolean getSecure() {...} // 判断浏览器是否通过安全协议发送cookie
    
    public int getVersion() {...} // 返回此cookie遵循的协议的版本
    
    public void setVersion(int v) {...} // 设置此cookie遵循的协议的版本
    
    public void setHttpOnly(boolean isHttpOnly) {...}
    
    public boolean isHttpOnly() {...}
    

    获取上次访问时间

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
    
        Cookie[] cookies = request.getCookies();
        // 第一次访问浏览器时cookie为null
        if (cookies == null) {
            out.print("这是你第一次访问");
            Cookie cookie = new Cookie("LastAccessTime", System.currentTimeMillis() + "");
            cookie.setMaxAge(10); // 设置cookie失效时间(窗口不关闭一直有效),设置-1失效
            response.addCookie(cookie); // 添加cookie
        } else {
            // 第n次访问
            for (Cookie cookie : cookies) {
                if ("LastAccessTime".equals(cookie.getName())) {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    out.print("上次访问时间:" + sdf.format(new Date(Long.parseLong(cookie.getValue()))));
                    cookie.setValue(System.currentTimeMillis() + ""); // 修改cookie的值
                    response.addCookie(cookie); // 更新cookie
                    break;
                }
            }
        }
    }
    

    保存中文

    Cookie的name和value都不能使用中文,如果希望在Cookie中使用中文,那么需要先对中文进行URL编码,然后把编码后的字符串放到Cookie中

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
    
        Cookie[] cookies = request.getCookies();
        // 第一次访问浏览器时cookie为null
        if (cookies == null) {
            Cookie cookie = new Cookie("name", URLEncoder.encode("张三", "UTF-8"));
            response.addCookie(cookie); // 添加cookie
        } else {
            // 第n次访问
            for (Cookie cookie : cookies) {
                if ("name".equals(cookie.getName())) {
                    out.print(URLDecoder.decode(cookie.getValue(), "UTF-8"));
                    break;
                }
            }
        }
    }
    
  • 相关阅读:
    generator
    JS 中 apply 、call 、bind的详解
    前端面试题(24-js)
    JS原型链深入了解
    Java12新特性
    Java11-ZGC
    Java11新特性
    Java10新特性
    Java9新特性
    CF1385E【Directing Edges】 (拓扑排序)
  • 原文地址:https://www.cnblogs.com/shenleg/p/14256829.html
Copyright © 2020-2023  润新知