概述
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();
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&四种范围对象作用域的全部内容,希望文章能够帮你解决cookie&session&四种范围对象作用域所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复