小鸡炸

导航

Cookie,Session,Application对象

一、Cookie

1、存储在浏览器上、只能存放字符串、不安全
2、默认生命周期是程序员创建、浏览器关闭销毁、亦可设置过期时间自动销毁
3、Cookie可以通过response来读写、亦可通过JS来读写

Cookie常用方法

方法 作用
setDomain()、getDomain() 设置获取Cookie的域名
setMaxAge()、getMaxAge() 设置获取Cookie的过期时间
getName() 返回cookie的名称
setValue()、getValue() 设置获取Cookie的值
setSecure() 传输过程的value加密、不是值加密(其实每意义,因为可以看到)
服务器操作Cookie:获取浏览器的Cookie用request对象、写入Cookie用response对象
//创建Cookie
Cookie cookie=new Cookie("key001", "aaaaaaaaaaaaaa");
//设置Cookie过期时间、单位秒
cookie.setMaxAge(30);
//Cookie写入浏览器
resp.addCookie(cookie);

//获取浏览器请求的所有Cookie对象
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
	System.out.println(cookie.getName()+":"+cookie.getValue());
}
JavaScript操作Cookie【注意:Cookie存储的path路径不同、是不会默认携带到服务器的,默认path路径是当前路由地址】
//-------------------------------可使用下面的工具类来读写Cookie--------------------------
//读取cookies
function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if(arr = document.cookie.match(reg)) return unescape(arr[2]);
    else return null;
}
//删除cookies
function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if(cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}
//设置cookie和过期时间(单位是秒)
function setCookie(name, value, time) {
    var exp = new Date();
    exp.setTime(exp.getTime() +time*1000);
    var expires = "expires="+exp.toGMTString();
    //设置key和value、以及过期事件
    document.cookie = name + "=" + escape(value) + " ;" + expires;
}

二、Session【HttpSession】的使用

1、Http协议是无状态协议、无法记录多次请求的浏览器信息、但有时候需要记录同一个浏览器多次请求服务器,故需要使用Session对象来记录多次请求的浏览器信息
2、Session的生命周期:浏览器第一次请求服务器创建、关闭浏览器默认销毁、或30分钟(可设置)内没有请求服务器亦销毁
3、Session对象存储在服务器端、浏览器只存放了一个SessionId的身份令牌
4、Session实现原理:浏览器第一次请求服务器,服务器会创建一个cookie,key是JSESSIONID、value是sessionid、然后把这个cookie存储在浏览器上、后面每一次请求、浏览器携带这个Cookie去服务器验证
5、Session的缺陷:

​ a、【容易泄漏】、当用户关闭浏览器时、session并没有及时销毁、而是等tomcat去判断session过期后才销毁、故即便用户关闭浏览器后、依然容易被非法人员拿到session继续操作,同理用户拿到sessionid后也可模拟浏览器请求;

​ b、第一次请求服务器创建【这点并不合理】、绝大部分需求是用户登陆后创建更合理、故大项目使用Token更合理、更节约资源

HttpSession常用方法

方法名 作用
getAttribute() 获取Session的属性值
getCreationTime() 获取Session的创建时间
getId() 获取Session的id
getLastAccessedTime() 返回最后发送请求的时间
getMaxInactiveInterval() 获取Session的过期时间、单位秒
invalidate() 销毁session
isNew() 判断是否是一个新的用户
removeAttribute() 删除一个属性
setAttribue() 设置一个属性

三、Application对象的使用

1、Application(ServletContext) 应用程序级别,整个项目共享、所有的Servlet共享
2、关闭服务器销毁,可以理解成 static 资源
方法 作用
setAttribute()、getAttribute() 设置获取Application属性
getInitParameter() 获取应用程序初始化的传输在web.xml配置初始化传输

posted on 2022-01-19 11:14  小鸡炸  阅读(68)  评论(0编辑  收藏  举报