会话技术(Cookie,Session)
2016-09-07 16:02
260 查看
会话技术(Cookie,Session)
会话:简单理解为一个用户开一个浏览器访问某一个网站,不关闭浏览器,点击多个超链接,访问服务器多个服务资源,然后关闭浏览器。整个过程就是一次会话(会话是针对一个网站而言)
分类:
客户端会话:Cookie
服务器会话:Session
解决问题:使用会话技术,可以在一次会话中的多次请求共享数据
Cookie:一种在客户端保持会话的跟踪解决方案
原理:
1.客户端第一次请求服务器端,服务器作出响应时,会发送set-cookie头,携带需要共享的数据
2.当客户端接受到这个响应,会将数据存储在客户端
3.当客户端再次请求服务器端时,会通过cookie请求头携带着存储的数据。
4.服务器接受带请求,会获取客户端携带的数据
//创建Cookie cookie=new Cookie(string1,string2);
string1:用于指定Cookie的属性名字
string2:用于存储指定的Cookie的属性值
//设置Cookie的有效时间
cookie.setMaxAge(time);
time:以秒为单位的整数时间
//获取Cookie
//从request对象中获取的是“一堆”的Cookie,所以是用一维数组接受
Cookie cookie[]=request.getCookie();
//可以用foreach去遍历数组
for(Cookie c:cookie)
//获取cookie的名字和属性值
cookie.getName();
cookie.getValue();
Cookie在实际中的应用:
记住用户名和密码,购物车里面的商品,网站的第几位访问以及上次访问时间等(通常这些数据是经过MD5加密的)
Session:使用HttpSession对象实现会话追踪技术,是一种在服务器保持会话跟踪的解决方案
//获取会话对象
HttpSession session=request.getSession();
或者
HeepSession session=request.getSession(true);
//存取会话遇属性
session.setAttribute("username","Jarrem"); //存储属性“username”,值为“Jarrem”
String name=(String)session.getAttribute("username");//通过属性名获取属性值
session.removeAttribute("username");//从会话中移除属性为“username”
//获取最大不活动时间
int time=session.getMaxInactiveInterval();
//使用代码设置最大不活动时间
session.setMaxInactiveInterval(3600); //单位为秒
//在web.xml中设置最大不活动时间
<session-config>
<session-timeout>10</session-timeout><!--单位是分钟-->
</session-config>
//设置会话立即失效
session.invalidate();
注意:关闭浏览器会话不会立即消失,仅客户端的会话cookie会失效,如果还没有达到session的最大活动时间,关闭浏览器服务器的会话对象是存在的,这就为会话攻击提供了可能,所以实际用用中引用“安全退出”结束会话
相关文章推荐
- 工厂模式(Factory)
- 【python】用setup安装自定义模块和包
- python2.7 print不换行输出
- Mybatis批量新增,修改
- 真正从零开始,TensorFlow详细安装入门图文教程!
- 身份证加密BlowFish
- 如何设置从U盘启动安装win7系统
- Linux系统中如何添加自己的库文件路径
- IT-硬件--硬盘接口对比
- Java 单例模式 安全问题
- Linux基础篇之udev:设备管理器
- 备忘录模式——论微信撤回
- 理解Spring 容器设计理念
- findbug的错误类型及修改建议
- 编译 openwrt 遇到问题 一 libiconv.so.2: cannot open shared object file
- Android 安装release版apk出现多个实例的问题解决方法
- CSSの神小结-简单备忘一下(亲测可用)
- 【原创】技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
- URLConnection参数详解
- C++:静态联编和动态联编