> 文档中心 > 【JavaWeb】Cookie和Session的学习

【JavaWeb】Cookie和Session的学习


注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!

文章目录

  • 一、cookie
    • (1)cookie的创建:
    • (2)cookie的获取:
    • (3)cookie值的修改:
    • (4)Cookie的生命控制
    • (5)Cookie有效路径Path的设置:
    • (6)Cookie练习之免用户名登录
  • 二、session
    • (1)什么是session?
    • (2)创建和获取session:

一、cookie

cookie是服务器通知客户端保存键值对的一种技术;
客户端有了cookie以后,每次请求都将cookie发送给服务器
每个cookie的大小不超过4kb

(1)cookie的创建:

//1、创建Cookie对象Cookie cookie =new Cookie("key1","value1");//解决相应乱码resp.setContentType("text/html;charset=UTF-8");//2.通知客户端保存resp.addCookie(cookie)resp.getWriter().write("cookie创建成功");//3.

(2)cookie的获取:

Cookie[] cookies=req.getcookies();for(Cookie cookie:cookies){  resp.getWriter().write(cookie)}

(3)cookie值的修改:

方案一(覆盖):

  1. 先创建一个要修改的同名的cookie对象
  2. 在构造器,同时赋予新的Cookie值
  3. 调用response.addCookie(Cookie);
Cookie cookie=new Cookie("key1","new value1")resp.addcookie(cookie);

方案二(更新):

  1. 先创建一个要修改的cookie对象;
  2. 调用setValue()方法赋予新的Cookie值;
  3. 调用response.addCookie(Cookie),通知客户端保存修改;
Cookie cookie=CookieUtils.findCookie("key2",req.getCookies());if(cookie!=null){cookie.setValue("newValue2");resp.addCookie(cookie);}

(4)Cookie的生命控制

cookie的生命控制指的是如何管理Cookie,什么时候被销毁(删除)
setMaxage()

  • 正数:表示在指定的秒数后过期
  • 负数,表示浏览器一关,Cookie就会被删除(默认)
  • 零,表示马上删除Cookie

(5)Cookie有效路径Path的设置:

cookie的path属性可以有效地过滤哪些Cookie可以发送给服务器,哪些不发;
path属性时通过请求的地址来进行有效的过滤;
`setPath(req.getcontextpath+“自定义路径”):

(6)Cookie练习之免用户名登录


二、session

(1)什么是session?

1.session是一个接口(HttpSession)
2. session就是会话;它是用来维护一个客户端和服务器之间关联的一种技术;
3.每个客户端都有自己的session会话
4.session会话中,我们经常用来保存用户登录后的信息;
5.4个域对象之一

(2)创建和获取session:

创建和获取session。它们的API都是一样的

reuqest.getsession()

第一次调用,创建session会话
之后调用都是获取前面创建好的session会话对象;

isNew()

用于判断是不是刚创建出来的(新的)
true:表示刚创建
false:表示获取之前创建;

每个会话都有一ID值,而且这个ID是唯一的;
getId()得到Session的会话id值;

session域中数据的存储

//存request.getSession().setAttribute(key,value)//取request.getSession().getAttribute(key)

(3)Session的生命周期控制:

设置Session的超时时长,以秒为单位,超过固定的时长,就会过期;默认时长是1800s(30分钟);因为在 tomcat的配置文件web.xml中默认有以下配置,他就默认了当前Tomcat服务器下所有的Session超时配置为30分钟

request.getSession().getMaxInactiveInterval()

如果说,如果希望自己的web工程默认的Session的超时时长为其他时长,可以在自己的web.xml配置文件中做以下和web.xml文件中相同的配置;

<!-- 这里设置默认时长为20分钟--!><session-config><session-timeout>20</session-timeout><session-config>

如果只想修改个别的session超时时长,可以使用以下API:

//设置超时时间为3srequest.getSession().setMaxInactiveInterval(3)

注意:session的超时指的是客户端发给服务器两次请求最大的间隔时长(也就是说在超时时间范围内若不断有请求,超时时间倒计时就会一直被重置)

超时时长为负数表示永不超时(极少使用)

让当前session会话马上超时无效:

session.invalidate()

(5)浏览器和服务器Session之间关联的技术内幕:
Session技术底层实际上是基于Coookie技术来实现的;
【JavaWeb】Cookie和Session的学习


如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!
在这里插入图片描述