什么是cookie

Cookie是由服务器产生,然后通过response(Set-Cookie)对象写入浏览器,然后保存在浏览器端,在request下一次访问的时候,通过cookie的请求头,将cookie带回浏览器

cookie的相关方法

new Cookie(name,value):创建cookie对象

response.addCookie():写回浏览器

request.getCookies():获取cookie

c.setMaxAge(60*60);  设置有效时间,单位:s

c.setPath("/");  设置共享路径

注意:如果 将MaxAge 设置成(0),即表示 cookie 失效

案例:记录上一次的登录时间

@WebServlet(name = "CookieServlet",value = "/cookieServlet")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = request.getCookies();
        Cookie times = null;
        Boolean flag = false;
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
        String format = simpleDateFormat.format(date);
        if (cookies != null){
            for (Cookie c:cookies) {
                if (c.getName().equals("times")){
                    times = c;
                    flag = true;
                    break;
                }
            }
        }

        if (!flag){
            response.getWriter().print("第一次登陆");
            times = new Cookie("times", format);
            response.addCookie(times);
            response.getWriter().print(times.getValue());
        }else {
            response.getWriter().print(times.getValue());
            times = new Cookie("times", format);
            response.addCookie(times);
        }

    }

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

cookie能不能存储中文?

tomcat8以前 不可以存储中文和特殊字符

tomcat8及以后:可以存储中文 但是不能存储特殊字符 (空格)

cookie的特点和作用

1、cookie存储数据在客户端浏览器

2、cookie存储的数据由大小限制:4kb 同一个域名下的的总的cookie数量(20个)

posted on 2019-02-19 20:23  Wzh_sc  阅读(114)  评论(0编辑  收藏  举报