娜姐带你认识Java-cookie&session
看见小伙伴留言
要娜姐分享
Cookie 和 Session 的区别
那好的今天我们就来认识一下
Cookie 和 Session 吧
Servlet 会话
想要了解Cookie和Session首先要了解会
什么是会话!会话指用户打开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称之为一次会话。会话过程中要解决的一些问题?每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
例如:多个用户打开今日头条各自商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点击结账时 servlet 可以得到用户各自购买的商品为用户结账。
每一次请求中,客户端必须将会话 ID(JSESSIONID) 发送给服务端。这样,服务器就能辨认客户端并维持会话状态了。其中JSESSIONID是由 Tomcat 或 Jetty 等服务器产生的用于会话管理的 cookie 管理。
Web 服务器一般采用如方式来进行会话管理
1.通过保存在客户端的 Cookie。
2.通过服务器端的 HttpSession 对象,要求客户端开启 Cookie。
3.如果客户端禁用 Cookie,只能通过 URL 重写方式。
cookiecookie技术可以做什么?
1.保存用户上次登录时间。
2.显示用户浏览历史。
3.把登录的用户和密码记录下来,下次登录,不需要重新输入。
什么是 Cookie?服务器在客户端保存用户的信息,如登录名,密码等,就是 Cookie。Cookie(小甜饼) 是客户端技术,服务器把每个用户的数据以 cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的 web 资源时,就会带着各自的数据去。这样 web 资源处理的就是用户各自的数据了。
那么现在我们来创建一个 Cookie
把登录的用户和密码记录下来
下次登录不需要重新输入
我们先创建一个工程
然后创建一个 index.html 登录页面
Java学习交流群:495273252
然后再建一个 Servlet
Java学习交流群:495273252
再来写一个jsp页面
(就是方便我们知道页面程序运行成功了没有)
现在来运行一下
点击登录
这就带表我们的程序没有问题可以正常执行
现在按下 F12 打开开发者调试工具
重新在页面输入账号和密码
伙伴们能看到我输入的用户名和密码是什么了吗?
现在我们设置 cookie 已经设置完成了
下一步
让我们的浏览器
得到 cookie 里面的值
(这边需要利用到 js 的知识)
效果就是:
总结:
1.Cookie 是在服务端创建,保存在浏览器这端。
2.Cookie 的生命周期可以通过 cookie.setMaxAge(2000) 设置。
如果不设置setMaxAge则该cookie的生命周期当浏览器关闭时,就消亡
3.Cookie 可以被多个浏览器共享(与session的区别)。
4.一个 web 应用可以保存多个 Cookie。
(如果 Cookie 重名了就会替换存在的 Cookie 值)
5.cookie存放的时候是以明文方式存放,因此安全较低。
(建议只保存用户名,不保存密码。)
注意:
1.保存在客户端的 Cookies 会在每个 HTTP 请求中都要附带发送,导致网络传输数据增大,影响性能。
2.在 HTTP 请求以明文发送 Cookies,除非使用安全协议(HTTPS),否则会有安全问题。
3.Cookies 的大小限制在4KB(新版本放松至8 KB)左右,难以保存复杂的会话跟踪信息。
4.用户可以改变浏览器的设置,启用或禁用 Cookies。如果用户禁用Cookies,服务器就无法将 Cookies 保存至客户端,从而无法使用Cookies 来跟踪会话状态。
5.安装在客户端的 Cookies 具有安全缺陷。一些浏览器自带或安装开发者工具包允许用户查看、修改或删除特定网站的 Cookies 信息。黑客可能采用跨站点脚本技术盗取用户的 Cookies 信息,可能给用户造成经济或其他损失。
session
大家都有在网上购物的经历吧?
不同的用户登录网站后,不管该用户浏览该网站的哪个页面都可以显示登录人的名字,同样可以随时去查看自己的购物车中的商品,而且我们的购物车中的商品也不一样,这些都是怎么实现的呢?
session技术
Session 是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的 Session 对象,由于 Session 为用户独享,所以用户在访问服务器的 web 资源时,可以把各自的数据放在各自的 Session 中,当用户再去访问服务器中的其它 web 资源时,其它 web 资源再从用户各自的Session 中取出数据为用户服务。
我们创建一个 Session
创建一个监听器
(用来监听Session会话的创建与销毁)
Java学习交流群:495273252
好咧!
现在我们打开了两个浏览器
Java学习交流群:495273252
第一次访问的时候,会创建一个 Session!并且提示你是新朋友,当我们刷新页面之后,检测到你不是第一次访问,页面上输出欢迎回来!
同时监听器在控制台上输出监听到的Session的生命周期
Session小结1. session是存在服务器的内存中。
2. 一个用户浏览器,独享一个session域对象。
3. session中的属性的默认生命周期是30min ,我们有3种 Session 生命周期的设置方式
第一种:tomcat/conf/web.xml
Java学习交流群:495273252
<session-config>
<session-timeout>30</session-timeout>
//表示30分钟的意思
</session-config>
对所有的 web 应用生效
第二种:在单个web应用的下去修改 web.xml
Java学习交流群:495273252
<session-config>
<session-timeout>30</session-timeout>
</session-config>
session精确到分钟,cookie精确到秒
如果发生冲突,则以自己的 web 应用的优先级高
第三种:直接在代码中写 session.setMaxInactiveinterval(30);
Java学习交流群:495273252
三十秒后session失效
5. session中可以存放多个属性
6. session 可以存放对象
7. 如果 session.setAttribute(“name”,val) , 如果名字重复,则会替换该属性.
Session 的作用
1.防止用户非法登录到某个页面
2.用户必须登录!否则不能操作和管理页面
这下了解
cookie 和 Session 的区别了吗?
伙伴们?