Cookie和Seesion
2020-03-22 16:05:25来源:博客园 阅读 ()
Cookie和Seesion
既然学习了javaweb,我就肯定避免不了要去接触cookie和seesion下面简单的描述一下两者:
cookie:
在网站登录的时候,会有一个再次网站下记住密码的选项,如果你选上了,下次登录的时候就不用再重新输入账号密码,
这就cookie实现的一个小功能。
客户端通过浏览器向服务器发出请求(记住账号密码)服务器响应客户端给客户端发送一个大约4kb左右的文档存放在客
户端浏览器当中,这个文档就属于一个cookie,当用户再一次打开浏览器登录时,这时就需要你重新输入账号密码浏览器
直接从cookie中取值。
cooki的生命周期默认情况下:从客户端开启浏览器到关闭浏览器 (可以设置cookie的有效期,从而实现永久有效);
创建 cookie : Cookie c = new Cookie("name", "value");
设置有效期: c.setMaxAge(24 * 60 * 60); //以秒为单位 这个是一天的时长
设置有效路径: c.setPath("127.0.0.1");
保存cookie: response.addCookie(c); //使用response将cookie保存在客户端浏览器里
删除cookie: Cookie cookie = new Cookie(WebConst.USER_IN_COOKIE, "");
cookie.setMaxAge(0);
response.addCookie(cookie);//将cookie有效求设置为零
有一段实例代码可供参考:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie[] cookies = request.getCookies(); if(cookies == null) { Cookie cookie = new Cookie("admin", "123456"); cookie.setMaxAge(7*24*3600); response.addCookie(cookie); System.out.println("cookie为空,跳转登录页面"); response.sendRedirect("Login.jsp"); }else { String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); for (Cookie cookie1 : cookies) { System.out.println("用户名:"+cookie1.getName()+"密码:"+cookie1.getValue()); if (name.equals(cookie1.getName()) && pwd.equals(cookie1.getValue())) { System.out.println("cookie不为空,跳转成功页面"); request.getRequestDispatcher("s.jsp").forward(request, response); }else { request.getRequestDispatcher("NewFile.jsp").forward(request, response); } } } }
seesion:
seesion与cookie不同,seesion是建立在服务器的一个会话,这里讲通俗一点,seesion就相当于一个会议室,
当客户端和服务器要进行交流的时候,服务器就会分配一个小房间给他们两个进行交流,这个小房间当服务器或者客
户端任何一方退出的时候(即服务器关闭或者客户端关闭),这个小房间就会被服务器收回。这就是一个seesion会话
由于seesion是在服务端里面的一种存在,我们是不可见的所以seesion比cookie更加安全:
seesion常见的几种方法:
1、public void setAttribute(String name,String value)设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。 2、public Object getAttribute(String name)在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。 3、public void removeAttribute(String name),删除指定名字的session属性,若该属性不存在,则出现异常。 4、public void invalidate(),使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。 5、public String getId( ),获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。 6、public void setMaxInactiveInterval(int interval) 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。 7、public int getMaxInActiveInterval(),获取会话的最大持续时间,使用时候需要一些处理
不要混淆 session 和 session 实现。
下面一段话来自知乎
本来 session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生
出“会话状态”,也就是 session 的概念。而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。可以认为是 session
的一种后端无状态实现。而我们今天常说的 “session”,是为了绕开 cookie 的各种限制,通常借助 cookie 本身和后端存储实现的,一种更高
级的会话状态实现。所以 cookie 和 session,你可以认为是同一层次的概念,也可以认为是不同层次的概念。具体到实现,session 因为
session id 的存在,通常要借助 cookie 实现,但这并非必要,只能说是通用性较好的一种实现方案。
作者:欲三更 链接:https://www.zhihu.com/question/19786827/answer/84540780
上次写上面的cookie代码的时候,要验证输入框的的值是否和存的cookie相同时 我发现浏览器会同时会保存两个cookie
后来百度才了解到有一个cookie是seesion_id作为cookie保存在浏览器里,当结束这次seesion会话是第一个cookie也会随
着摧毁。
参考链接:https://www.jianshu.com/p/efee53ccd12e
https://www.cnblogs.com/lxr521/p/10765463.html
注:个人学习QAQ ,如有错误,还请指点,谢谢qwq
原文链接:https://www.cnblogs.com/2979100039-qq-con/p/12546324.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:微信登录
- Cookie显示上次访问时间出现错误的问题 2020-04-21
- @CookieValue 的使用 2020-04-20
- Cookie&&Session 2020-02-02
- Web基础了解版09-Cookie-Session 2019-12-28
- JavaEE基础(04):会话跟踪技术,Session和Cookie详解 2019-12-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash