一家专门做特卖的网站,前端开发常用框架,网站建设都需要什么,php网站建设情景【有道云笔记】十九 4.7 Cookie、Session登录 https://note.youdao.com/s/VwpxfEim
一、会话技术简介
生活中会话
我#xff1a; 小张#xff0c;你会跳小苹果码#xff1f;
小张#xff1a; 会#xff0c;怎么了#xff1f;
我#xff1a; 公司年会上要表演节目 小张你会跳小苹果码
小张 会怎么了
我 公司年会上要表演节目你教教我把
小张没问题一顿饭而已。
我 OK。
。。。。。。。。
在这次生活中的会话中产生通话记录会话数据
软件中的会话
链接到数据库Connection也叫会话你要想操作数据库要和数据库保持一个会话的功能。
会话
一次会话浏览器第一次给服务器资源发送请求会话建立直到有一方断开为止
会话技术就是记录这次会话中客户端的状态与数据的。
会话技术分为Cookie和Session
Cookie数据存储在客户端本地减少服务器端的存储的压力安全性不好客户端可以清除cookie
Session将数据存储到服务器端安全性相对好增加服务器的压力 ServletContext域对象的作用范围整个web应用所有的web资源servlet、jsp都可以向ServletContext域中存取数据数据是可以共享的
数据放在服务器的技术叫Session技术Session技术要用到Cookie 四个域对象
Request、ServletContext、Session、Page 都可以通过setAttribute(key, value) getAttribute(key)存取数据
什么是域对象
Request、Session、ServletContext这三个都是域对象域对象就是存储数据的区域其实就是服务器中一块内存区域
所有的域对象都有这三个方法
request.setAttribute(list, list);request.getAttribute(list);request.removeAttribute(list);
Request、Session、ServletContext这三个都是域对象区别就是他么的范围不一样。
request.setAttribute(list, list); requst的范围只在转发中有效。session.setAttribute(list, list); session的范围是当前这个用户的所有操作都有效。servletContext.setAttribute(list, list);servletContext的范围整个项目都有效。
范围ServletContextSessionRequestPage
使用原则小的范围能完成功能就放到小的里面。
一、Cookie
数据放在浏览器端的技术叫Cookie技术 像亚马逊这种电商网站用户没有登录时候购物车信息是存放在Cookie中如果用户登录了会把Cookie中购物车信息 同步到服务器的数据库中是不会放到Session中因为像ServletContext和Session都是服务器中的一块内存区域是非常宝贵重启服务器所有的内存区域都会销毁数据也就没有。
大家都有这种体验登录之后加入在电脑浏览器加入购物车信息在手机上也能访问手机上是从服务器的数据库中拿到的。 1、服务器怎么将Cookie设置到浏览器客户端
创建Cookie
Cookie cookie new Cookie(cookieName, cookieValue);
例子
Cookie cookie new Cookie(goods, IPhone);
resp.addCookie(cookie);
Cookie会以响应头的形式发送给浏览器客户端。
Cookie中不能存中文。 再请求Servlet的时候会自动携带设置的Cookie 2、服务器怎么接受客户端携带的Cookie
cookie信息是以请求头的方式发送到服务器端的
1通过request获得所有的Cookie
Cookie[] cookies request.getCookies();
2遍历Cookie数组通过Cookie的名称获得我们想要的Cookie
protected void service(HttpServletRequest req, HttpServletResponse resp) { Cookie[] cookies req.getCookies(); for (Cookie cookie : cookies) { System.out.println(name: cookie.getName() , value: cookie.getValue()); } }
3、Cookie在浏览器中保存多长时间
1. 默认情况下当浏览器关闭后Cookie数据被销毁
2. 持久化存储
cookie.setMaxAge(10 * 60);//保存10分钟
设置Cookie信息在浏览器的磁盘文件中存储的时间是10分钟过期浏览器自动删除该Cookie信息。
an integer specifying the maximum age of the cookie in seconds; if negative, means the cookie is not stored; if zero, deletes the cookie
正数将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间时间到后cookie文件自动失效
负数浏览器关闭的时候Cookie就丢失,默认值
零表示删除同名的Cookie数据。
删除客户端的Cookie
如果想删除客户端已经存储的Cookie信息就是将持久化时间设置为0 二、Session
Session服务器端会话技术在一次会话的多次请求间共享数据将数据保存在服务器端的对象中。HttpSession
但客户端需要每次携带一个标识的IDJSESSIONID去服务器寻找自己的内存空间。
所以说Session技术是基于Cookie技术的Session需要借助于Cookie存储客户的唯一标识JSESSIONID。
1、获得Session对象
两中getSession方法
HttpSession session request.getSession(false);
HttpSession session request.getSession(true); request.getSession();
request.getSession(false)
得到session对象原来有Session就直接返回没有返回null
request.getSession(true)
创建或得到session对象原来有Session就直接返回没有Session自动创建新的session对象。
request.getSession(); 不加参数默认就是true。
2、怎样向session中存取数据
Session也是存储数据的区域对象所以session对象也具有如下三个方法
session.setAttribute(String name,Object obj);session.getAttribute(String name);session.removeAttribute(String name);
3、Session对象的生命周期
创建第一次执行request.getSession()时创建
销毁
服务器关闭时session过期/失效默认30分钟
问题时间的起算点 从何时开始计算30分钟
从不操作服务器端的资源开始计时
可以在工程的web.xml中进行配置
30
手动销毁session 注销或者退出
session.invalidate();
当在同一个浏览器中同时打开多个标签发送同一个请求或不同的请求仍是同一个session;
当使用不同的浏览器时发送请求即使发送相同的请求是不同的session;
当把当前某个浏览器的窗口全关闭再打开发起相同的请求时是不同的session.
4、Session与Cookie的区别
Session存储数据在服务器端Cookie在客户端Session没有数据大小限制Cookie有Session数据安全Cookie相对于不安全 三、登录
使用Session技术完成用户登录的功能
登录功能会使用到Session把用户登录的用户名和密码保存到Session因为Session是属于每个用户独有的就可以记录每个用户单独的登录信息。