• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Cookie-cookie创建、获取、修改、存活时间

武飞扬头像
我没得冰阔落.
帮助1

1、cookie的简介

  1. 什么是cookie
    cookie是用来存储在客户端浏览器上面的文本文件,它可以跟踪各种信息。比如在网页登录账号是,用户名、密码等信息就是cookie。

  2. cookie有什么作用
    cookie可以保存客户端的一些信息,比如你在某个页面登录的相关信息可以保存在cookie里面,当你下次再次请求访问这个页面时,浏览器直接查找有没有保存这个用户信息的cookie,如果有直接用。减少了再次访问服务器的繁琐。在你登录新账号时,浏览器会弹出是否记住该账号,如果记住,直接修改对应cookie的存货时间就可以了。

  3. 如何查看浏览器的cookie-这里以我使用的edge为例
    方法1:
    1.打开浏览器设置
    2.点击cookie和网站权限
    3.管理和删除cookie数据
    4.查看所有cookie
    学新通

方法2:
1.点击f12
2.点击应用程序(application)
3.cookie就可以l
学新通

2、操作的一些技巧(尚硅谷所学)

可以在html里面利用超链接,再通过iframe标签观看实现情况,十分方便。这也算是对前面所学的一个实践了。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <base href="http://localhost:8700/cookie_war_exploded/">
</head>
<body>
        <iframe name="target" width="500px" height="500px"></iframe>
        <label>
            <li><a href="cookie001" target="target">创建cookie</a></li>
            <li><a href="cookie002" target="target">获取cookie</a></li>
            <li><a href="cookie003" target="target">查找值为键值key1的cookie</a></li>
            <li><a href="cookie004" target="target">修改cookie</a></li>
            <li>修改cookie存活周期</li>
            <li><a href="cookie005" target="target">正数情况</a></li>
            <li><a href="cookie006" target="target">零</a></li>
            <li><a href="cookie007" target="target">修负数情况</a></li>
        </label>
</body>
</html>
学新通

学新通

3、利用程序创建cookie

创建cookie很简单只需要两步:
1.在servlet程序里面创建一个cookie对象,注意是键值对形式,键和值都是字符串。
2.将cookie添加到浏览器(客户端)就OK了

@WebServlet("/cookie001")
public class CookieDemo001 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.首先把编码方式换成utf-8,不然显示中文时会乱码
        resp.setContentType("text/html;charset=utf-8");
        //2.创建cookie
        Cookie cookie = new Cookie("key1","value1");
        //3.添加cookie
        resp.addCookie(cookie);
        resp.getWriter().write("Cookie创建成功!!!");
    }
}

通过查看发现cookie已经创建成功!!!
学新通

4、获取cookie

获取cookie也十分方便,浏览器将所有cookie键值对放在一个cookie数组里面,我们只需要遍历数组就可以查看了
1.创建cookie数组,从request域中获取cookie
2.遍历cookie数组就可以查看了

@WebServlet("/cookie002")
public class getCookie extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        Cookie [] cookies = req.getCookies();

        for (Cookie cookie : cookies) {
            System.out.println("cookie名称:" cookie.getName());
            System.out.println("cookie值:" cookie.getValue());
            resp.getWriter().write("cookie名称:" cookie.getName() "," "cookie值:" cookie.getValue());
            resp.getWriter().write("<br/>");
        }
    }
}
学新通

学新通
如果需要查找特定cookie,只需要对比键名就可以了。比如我还要值为key1的cookie

@WebServlet("/cookie003")
public class CookieDemo003 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        Cookie [] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if("key1".equals(cookie.getName())){
                resp.getWriter().write("找到了!!!" "cookie名称:" cookie.getName() "," "cookie值:" cookie.getValue());
            }
        }
    }
}

学新通

5、修改cookie

修改cookie也是特别简单,只需要找到想要修改的cookie,然后通过setValue()方法修改
这里把前面创的名为cookie003的值换成003,然后再保存新的cookie

@WebServlet("/cookie004")
public class CookieDemo004 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if("cookie003".equals(cookie.getName())){
                resp.getWriter().write("修改之前" "cookie名称:" cookie.getName() "," "cookie值:" cookie.getValue() "<br/>");
                cookie.setValue("003");
                resp.addCookie(cookie);
            }
        }
        Cookie[] cookies1 = req.getCookies();
        for (Cookie cookie : cookies1) {
            if("cookie003".equals(cookie.getName())){
                resp.getWriter().write("修改之后" "cookie名称:" cookie.getName() "," "cookie值:" cookie.getValue());
            }
        }
    }
}
学新通

学新通
学新通
这里提醒一下一定要重新保存一下新的cookie值,不然会出现iframe框里面提示已经修改了,但是浏览器后台是没有修改的。这是因为iframe框里面是同一个servlet程序的,修改之后还没有告诉浏览器,导致浏览器里面的cookie没有修改。

学新通

学新通

6、修改cookie存活周期

cookie也是有存货周期的,它的存活周期默认为一次会话,也就是打开浏览器到关闭浏览器之间都还在。但是我们可以通过修改存货时间修改它的存货时间。通过setMaxAge()方法实现,它的单位为秒。
传入参数几种情况:
1.正数:就是存活多少秒。

@WebServlet("/cookie005")
public class CookieDemo005 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if("cookie003".equals(cookie.getName())){
                resp.getWriter().write("修改存活周期为1天");
                cookie.setMaxAge(60*60*24);
                resp.addCookie(cookie);
                resp.getWriter().write("存活周期已经修改了");
            }
        }
    }
}
学新通

学新通
这里的时间不是北京时间,所以会有一定差异

2.零:马上删除该cookie

@WebServlet("/cookie006")
public class CookieDemo006 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if("cookie003".equals(cookie.getName())){
                resp.getWriter().write("修改存活周期为0");
                cookie.setMaxAge(0);
                resp.addCookie(cookie);
                resp.getWriter().write("存货周期已经修改了");
            }
        }
    }
}
学新通

学新通
cookoo3就没有了
3.负数:默认情况,一次会话。

@WebServlet("/cookie007")
public class CookieDemo007 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if("cookie004".equals(cookie.getName())){
                resp.getWriter().write("修改存活周期为-1");
                cookie.setMaxAge(-1);
                resp.addCookie(cookie);
                resp.getWriter().write("存货周期已经修改了");
            }
        }
    }
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiefhgc
系列文章
更多 icon
同类精品
更多 icon
继续加载