cookie&session&四种范围对象作用域

1.Cookie(客户端)

Cookie不是内置对象,使用时需要自己实例化,为name=value键值对形式。Cookie是由服务器端生产,再发给客户端保存的,相当于本地缓存的作用,可以访问效率,但安全性较差。

构造方法:public Cookie(String name, Sttring value);
在使用中文时需要进行编码与解码

获取name值:String getName();

获取value值:String getValue();

设置最大有效期(生命周期),单位为秒:void setMaxAge(int expiry);

执行过程:
1.服务器端准备Cookie
Cookie cookie = new Cookie(“name”, “value”);
response.addCookie(cookie);
2.页面跳转(请求转发、重定向都行)
3.客户端获取Cookie(request.getCookies()?;
获取cookie时,只提供了获取全部Cookie值的方法,需要通过遍历来找到需要的cookie。
另外,除了自己设置的cookie对象外,还有一个名为JSESSIONID的cookie对象。客户端第一次请求服务器端时,服务端会产生一个session对象(用于保存该客户信息),并且每个session对象都会有一个唯一的sessionID(用于区分不同客户),服务器端同时会产生一个cookie对象,该cookie对象的name=JSESSIONID,value=sessionID。服务器端在响应客户端的同时将该cookie发送给客户端。由此,客户端好服务器端客户就可以通过JSESSIONID=sessionID来一一对应了。
在这里插入图片描述

2.session(服务器端)

session:会话

获取sessionId:String getId();

判断是否为新用户(第一次访问):boolean isNew();

清楚session(使session失效):void invalidate();

设置最大有效非活动时间(用户未操作时为非活动时间), 单位为秒:void setMaxInactiveInterval();

获取最大有效非活动时间:int getMaxInactiveInterval();

NULLsessioncookie
保存位置服务器端客户端
安全性较安全较不安全
保存内容objectstring
3.application 全局对象

String getContextPath(); 获取虚拟路径

String getRealPath(); 获取虚拟路径相对的绝对路径

4.四种范围对象
对象对象名范围(从小到大)
pageContextJSP页面容器当前页面有效
reqeust请求对象同一次请求有效
session会话对象同一次会话内有效
application全局对象全局有效(整个项目有效)

共有方法:

Object getAttribute(String name); 根据属性名,获取属性值

void setAttribute(String name, Object obj);新增属性对,同时也可以对属性值进行修改

void removeAttribute(String name);根据属性值,删除对象

详细

pageContext: 跳转后无效

request:同一次请求内有效,如请求跳转,但重定向跳转不属于同一次请求

session:无论怎么跳转都有效,当关闭或者切换浏览器无效

application:整个项目期间有效,服务器关闭后无效

多学一招:多个项目共享,且重启服务器仍然有效可以使用JNDI技术

ps:对象范围越大,损耗越大,尽量当前可使用对象中范围较小的对象。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值