理解Cookie和Session(会话技术):
为什么需要会话技术?
由于http协议是无状态的,也就是说每个用户访问服务器的时候,服务器并不知道是谁在访问它。 所以这个时候我们就需要利用会话技术来帮助服务器来记住客户端。
举个例子: 我们的web购物系统,我们用户将将准备买的物品信息存储在哪里呢?
会话技术到底是什么?
一次会话:从打开一个浏览器访问一个服务器站点,到关闭这个浏览器的整个过程称。 会话技术分为两种,Cookie和Session: + Cookie: 将数据存储在本地磁盘,可以减少服务器的存储压力,但是安全性能不好,客户端用户可以自发的清楚掉Cookie信息。 + Session:将数据存储在服务器中,安全性能好,但是服务器压力会比较大。
Cookie介绍
我用一个简单的例子来介绍Cookie是什么: 在我们日常生活中,比如我们是一个健身房的会员,健身房就会给你发一张VIP卡,这张VIP卡上面记录有你的姓名,联系方式,会员有效时间等等记录,每次你到健身房去健身,只要你拿出了这张健身卡别人就知道是你了。
这个例子就类似于我们用户第一次访问服务器,服务器也会像健身房一样给我们用户发送一些信息,用来记录用户信息。
Cookie cookie = new Cookie(String cookieName,String cookieValue);
/* 注意:cookie不能存储中文信息*/
cookie.setMaxAge(int seconds); /* 时间秒 */
注意:如果不设置持久化时间cookie会存储在浏览器的内存中,浏览器关闭的话Cookie的信息就销毁了,如果设置了持久化时间的话那么cookie将会被存储到磁盘文件中。
示例:
cookie.setMaxAge(10*60);
*设置cookie信息在浏览器的磁盘文件中存储的时间是10分钟,过期浏览器 自动删除该cookie信息*
cookie.setMaxAge(0);
response.addCookie(Cookie cookie);
//获得客户端携带的Cookie的数据
/*获得信息并且输出*/
Cookie[] cookie = request.getCookies();
//通过cookie名称获得想要的cookie
for (Cookie cookie1 : cookie) {
String cookieName = cookie1.getName();
if (cookieName.equals("name")) {
String cookieValue = cookie1.getValue();
System.out.println(cookieValue);
}
}