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;
            }
        }
    }
}
posted @ 2021-01-10 15:10  神乐g  阅读(63)  评论(0编辑  收藏  举报