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来一一对应了。
cookie&session&四种范围对象作用域_第1张图片

2.session(服务器端)

session:会话

获取sessionId:String getId();

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

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

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

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

NULL session cookie
保存位置 服务器端 客户端
安全性 较安全 较不安全
保存内容 object string
3.application 全局对象

String getContextPath(); 获取虚拟路径

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

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

共有方法:

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

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

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

详细

pageContext: 跳转后无效

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

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

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

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

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

你可能感兴趣的:(笔记,cookie,session,JSESSIONID)