cookie

1、什么是 Cookie?

Cookie 是一些数据, 存储于你电脑上的文本文件中。

当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

Cookie 的作用就是用于解决 "如何记录客户端的用户信息":

当用户访问 web 页面时,他的名字可以记录在 cookie 中。

在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。

Cookie 以名/值对形式存储,如: username=John Doe

2、使用Cookie对数据进行存取

存数据


//创建COOKie

Cookie cookie =new Cookie("username","jd1208");

Cookie cookie2 =new Cookie("passwod","12346");

//向浏览器发送cookie信息

response.addCookie(cookie);

response.addCookie(cookie2);


取数据

//获取cookie

Cookie[]cookies = request.getCookies();

//遍历cookie

for (Cookie c :cookies) {

String name =c.getName();   //获取name

String value =c.getValue();//获取value


3、cookie里面存中文

Tomcat8以下版本不支持,会出现中文乱码。以上版本支持

如何解决?需要转码。

//处理中文

String name ="张三";

name =URLEncoder.encode(name,"utf-8");

//存

Cookie c =new Cookie("name",name);


//取

Cookie[]cookies = request.getCookies();

for (Cookie cookie1 :cookies) {

String value =URLEncoder.encode(cookie1.getValue(),"utf-8");

}


4、cookie的携带路径

为cookie产生路径

设置cookie有效访问路径,先设置访问路径再添加cookie进response

Cookie cookie =new Cookie("jd_user","jd12090909");

cookie.setPath(request.getContextPath());

response.addCookie(cookie);

5、cookie的生存时间

默认是当前会话,浏览器关闭,会话结束,cookie失效。

cookie.setMaxAge(60*5);//单位是秒


记录访问时间

* 需求:用户首次访问,显示欢迎语。之后访问,显示上次访问时间。

* 实现:首次访问,获取cookie的对象,如果为空,就是首次访问。此时将这次访问时间存入当前cookie中

*      之后,先获取cookie中的数据,再进行覆盖

response.setContentType("text/html;charset=UTF-8");//处理页面中文乱码

Cookie[]cookies = request.getCookies();

String time =null;//存放访问时间

if(cookies !=null){

//从cookie中取出上次访问的时间

    for (Cookie cookie :cookies) {

String name =cookie.getName();

if("time".equals(name)){

//证明找到了名字为time的cookie

            time =cookie.getValue();

Cookie cookie1 =new Cookie(name,MyData.format());

cookie.setPath(request.getContextPath());//访问范围为当前web项目

            cookie.setMaxAge(60*10);//10分钟内不过期

            response.addCookie(cookie1);//将cookie存入response

        }

}

if(time!=null){

//证明在cookie中取到了名字为time的cookie

        response.getWriter().write("上次访问时间为:"+time);

}else{

response.getWriter().write("  error :cookie不为空,但是取不到time值 ");

}

}else{

//首次访问

    //获取当前的时间

    time =MyData.format();

//将当前时间存入cookie

    Cookie cookie =new Cookie("time",time);

cookie.setPath(request.getContextPath());//访问范围为当前web项目

    cookie.setMaxAge(60*10);//10分钟内不过期

    response.addCookie(cookie);//将cookie存入response

    //打印“新用户:xxxx,欢迎您”

    response.getWriter().write("新用户:xxxx,欢迎您");

}



6、清空cookie

使用覆盖的方式:保证同名键(cookie的name相同),保证相同路径,设置过期时间为0

清空name=jd_user的cookie

//设置一个cookie

Cookie cookie =new Cookie("jd_user","jd12090909");

//设置cookie有效访问路径

cookie.setPath(request.getContextPath());

//设置一个同名Cookie

Cookie cookie1 =new Cookie("jd_user","jd12090909");

//设置相同的访问路径

cookie1.setPath(request.getContextPath());

//设置过期时间

cookie1.setMaxAge(0);


7、记录用户登录用户名与密码


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

response.setContentType("text/html;charset=UTF-8");

//获取username,password

    String username =request.getParameter("username");

String password =request.getParameter("password");

String[]rember = request.getParameterValues("rember");

//判断用户名,密码是否正确

    if("zhangsan".equals(username)&&"123".equals(password)){

response.getWriter().write("登录成功");

}else{

response.getWriter().write("登录失败");

}

if(rember ==null){

System.out.println("rember为空");

//提交的时候,不勾选

        //不点击记住我,清空cookie信息

        Cookie[]cookies = request.getCookies();

for (Cookie cookie :cookies) {

String name =cookie.getName();

if(name.equals("tt_username")||name.equals("tt_password")){

cookie.setValue("");

cookie.setMaxAge(0);

response.addCookie(cookie);

}

}

}else{

//不为空,说明用户点击了记住我

        //1、向cookie存入用户名

        Cookie cookie =new Cookie("tt_username",username);

Cookie cookie_pass =new Cookie("tt_password",password);

//2.设置用户 的访问范围

        cookie.setPath(request.getContextPath());

cookie_pass.setPath(request.getContextPath());

//3.设置用户cookie的过期时间

        cookie.setMaxAge(60*10);

cookie_pass.setMaxAge(60*10);

response.addCookie(cookie);

response.addCookie(cookie_pass);

}

doGet(request, response);

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容