会话技术
概述
会话文章源自JAVA秀-https://www.javaxiu.com/548.html
文章源自JAVA秀-https://www.javaxiu.com/548.html
当打开一个浏览器的时候,意味着会话开始了 在开始和结束间,浏览器和服务器可以进行N次的交互 当关闭了该浏览器的时候,意味着会话结束了
作用
用来存储浏览器和服务器交互产生的N多数据(cookie或者session)文章源自JAVA秀-https://www.javaxiu.com/548.html
会话技术的分类:cookie和session文章源自JAVA秀-https://www.javaxiu.com/548.html
cookie(浏览器端的会话技术):浏览器和服务器交互的数据可以存储在cookie,整个cookie在浏览器端 session(服务器端的会话技术):浏览器和服务器交互的数据可以存储在session,整个session在服务器端
什么情况下我们会选择使用cookie或session去存储浏览器和服务器交互中产生的数据?文章源自JAVA秀-https://www.javaxiu.com/548.html
当用户的私有数据需要在多个Servlet之间传递的时候,可以使用会话技术解决(cookie&session)
客户端的会话技术:cookie
概述
cookie: 小纸条 作用:存储并且传递数据 (浏览器和服务器交互的数据)文章源自JAVA秀-https://www.javaxiu.com/548.html
特点文章源自JAVA秀-https://www.javaxiu.com/548.html
1 数据都在浏览器方 2 cookie是由服务器创建交给浏览器保存
cookie的使用
文章源自JAVA秀-https://www.javaxiu.com/548.html
服务器如何创建cookie文章源自JAVA秀-https://www.javaxiu.com/548.html
Cookie cookie=new Cookie(String,String);
服务器如果把cookie传递给客户端文章源自JAVA秀-https://www.javaxiu.com/548.html
response.addCookie(cookie);
注意:服务器可以给浏览器传递多个cookie,浏览器都会保存 但存在key值覆盖文章源自JAVA秀-https://www.javaxiu.com/548.html
服务器端如何获取到浏览器传递的cookie信息文章源自JAVA秀-https://www.javaxiu.com/548.html
Cookie[] request.getCookies(); //自动从请求头中 获取cookie信息 并且切割并封装成多个cookie对象
cookie的常用API文章源自JAVA秀-https://www.javaxiu.com/548.html
getName(); 返回值String,返回的是cookie的key getValue(); 返回值String,返回的是cookie的value
cookie的整个使用过程文章源自JAVA秀-https://www.javaxiu.com/548.html
服务器创建cookie存储数据--->把整个cookie传递给浏览器---->浏览器端自动保存cookie 浏览器会自动将保存的cookie传递服务器--->服务器获取传递的cookie数据--->使用数据
cookie的细节
会话级别的cookie(默认方式)和持久化级别的cookie文章源自JAVA秀-https://www.javaxiu.com/548.html
文章源自JAVA秀-https://www.javaxiu.com/548.html
会话级别的cookie:浏览器关闭当前会话默认会把保存的cookie全部销毁(默认) 持久化级别的cookie:可以让浏览器在一定时间不论开关都会保留cookie 方法:setMaxAge(秒) >0: 有效时间 =0:过期(清除) 特点:设置的时间如果到期了,浏览器会自动把过期的cookie销毁
cookie的路径:通过设置cookie的路径 设置该cookie在哪些资源下有效文章源自JAVA秀-https://www.javaxiu.com/548.html
方法api:setPath(“路径”) /day10/cs5 只在访问/day10/cs5资源才带 /day10 访问整个day10项目下的资源都带(企业) / 访问整个服务器上的项目资源都带 默认 当前servlet访问路径的上一级 访问到当前servlet的上一级路径才带 例如:Servlet: /demo/sd1==访问/demo下的资源才携带
cookie的注意点:文章源自JAVA秀-https://www.javaxiu.com/548.html
cookie中不能出现特殊符号 例如:空格 分号 逗号 cookie存入的数据有大小限制 4kb
案例:案例--记录用户最新访问时间 且输出用户的上次访问时间文章源自JAVA秀-https://www.javaxiu.com/548.html
服务器端的会话技术:session
概述
session是保存在服务器端的会话技术 作用:也是为了保存会话中产生的数据 特点 文章源自JAVA秀-https://www.javaxiu.com/548.html
1 保存在session中的数据在服务器端 2 session其实就是一个域对象 xxxAttribute()存储数据的方法
session的使用
session获取:request.getSession()文章源自JAVA秀-https://www.javaxiu.com/548.html
作用范围:文章源自JAVA秀-https://www.javaxiu.com/548.html
数据在一次会话中共享 因为在一次会话中,访问多少个servlet,获取到的session都是同一个 但是如果不在一次会话中,多个servlet中产生的不再是同一个session对象
session的剖析(理解)
为什么在一次会话中,使用的都是同一个session对象文章源自JAVA秀-https://www.javaxiu.com/548.html
Cookie:JSESSIONID=C573A3AF2DDF0491AE6FB31608525641 因为jsessionid相同,根据jsessionid获取的session是同一个
为什么浏览器关闭以后(不在一个会话了),使用的就不是同一个对象了文章源自JAVA秀-https://www.javaxiu.com/548.html
浏览器一关闭 Cookie销毁了 cookie中的JSESSIONID也就没有
session的执行流程
文章源自JAVA秀-https://www.javaxiu.com/548.html
当执行到调用getSession方法时,首先判断cookie中是否有jsessionid。 如果不存在jsessionid:那么直接创建一个新的session对象返回给你,并且向响应头中写一个新的jsessionid存放cookie给浏览器保存 如果存在jsessionid:从服务器内存中去获取对应的session对象继续使用 (浏览器关闭) 再次判断cookie中是否有jsessionid,如果没有,那么直接创建一个新的session对象返回给你,并且向响应头中写一个新的jsessionid存放cookie给浏览器
session和cookie的区别?(面试题)文章源自JAVA秀-https://www.javaxiu.com/548.html
session:服务器端的会话技术 数据都在服务器 cookie:客户端的会话技术 数据都在浏览器 session:存储的内容没有大小限制 cookie:只能存储4kb的内容 session:存储的数据安全 cookie:存储的数据不安全
作业:案例:使用session判断验证码完成登录功能
文章源自JAVA秀-https://www.javaxiu.com/548.html

评论