栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【JavaWeb】Cookie和Session的学习

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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超时时长,可以使用以下API:

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

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

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

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

session.invalidate()

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


如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号