为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第八天...

【九月打卡】第八天 Servlet进阶-Session与ServletContext原理

2022.09.18 20:50 46浏览

课程信息

● 学习课程:Java工程师2022版
● 章节名称:Servlet进阶-Session与ServletContext原理
● 讲师:八戒猪

课程内容

1、浏览器Cookie
Cookie是浏览器保存在本地的文本内容
Cookie默认域名绑定,只有当前 域名下的程序才能读取数据
Cookie时效性,Cookie会伴随请求头发送给服务器,默认有效期与当前浏览器进程绑定,设置过期时间后,Cookie过期后才会失效

// 设置Cookie
Integer random = new Random().nextInt(10000);
response.addCookie("random",random);
cookie.setMaxAge(60*60*24); // 有效期一天时间内
// 获取Cookie
Cookie[] cookies= request.getCookies();
response.setContentType("text/html;charset=utf-8");
if(cookies == null {
    response.getWriter().println("暂无cookie");
	return;
}
Integer random = -1;
for(Cookie c in cookies){
	if(c.getName = "random"){
		random = Integer.valueOf(c.getValue());
	}
}
response.getWriter().println("<h2>name=random的cookie为"+random+"</h2>");

2.Session用户会话 保存与"浏览器窗口" 对应的数据,服务器的内存中,时效性(银行卡,Cookie现金,带在身上)
Session通过浏览器Cookie的SessionId值提取用户数据(银行卡身份标识)

// 设置session
Integer random = new Random().nextInt(10000);
HttpSession session = request.getSession();
session.setAttribute("random", random);
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("<h2>随机数"+random+"已生成</h2>");
//获取session
HttpSession session = request.getSession();
Integer random = (Integer)session.getAttribute("random");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("<h2>name=random的session值为"+random+"</h2>");

3.session的原理
默认情况下,只要浏览器窗口没有关闭,这个跟session对应的cookie是不会消失的。新生成的sessionid会在新请求头中一同发送。
所以几个不同窗口,访问到的session变量值是一样的。
即使浏览器窗口关闭,但是服务端的session默认会存放半小时,也不会马上消失。
但是这时浏览器再发起请求,就会产生新的sessionid。
在响应重定向之前,将数据保存在session中,重定向时,在请求中会附带sessionId对应访问session内存,获取相应的数据。
session应用:跨请求的之间的数据交换,将数据保存在session中供下一个servlet使用。
谷歌浏览器,不同窗口会共享seesion
4、 ServletContext与三大作用域 web应用的全局对象
一个Web应用只会创建一个ServletContext对象
ServletContext随着Web应用的启动而自动创建

//设置servletContext
ServletContext sevletContext = request.getServletContext();
sevletContext.setAttribute("copyright","Copyright ....");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("<h2>ServletContext已初始化</h2>");

//获取servletContext
ServletContext sevletContext = request.getServletContext();
String copyright = (String)sevletContext.getAttribute("copyright");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(copyright);

Java Web三大作用域 (以下作用域由小到大)
HttpServletRequest - 请求对象
HttpSession -用户会话对象
ServletContext- Web应用全局对象

学习收获

学习了cookie做什么的以及特性,然后对应cookie的设置和获取,对于session是什么和特性有哪些,如何设置和获取session内容,session的原理,通过cookie存储的sessionId,提取对应的session内容,然后对应重定向,使用session传递信息共下一个servlet使用,对于全局作用域的webServletContext的设置和获取。

打卡截图

图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消