session技术和cookie技术的区别,及实现过程

一、什么是Session:
Session就是将数据存储在服务器端的技术,它为每一个cookie客户端都创建了一个内存空间,用来存储客户的数据。客户端需要携带一个标识去找对应的内存空间。所以Session的是基于cookie的,需要借助cookie中存储客户唯一标识的id去实现。
1.如何获取Session对象:
通过HttpSession session=request.getSession();
这个方法会获取到当前会话的session对象,如果没有则会创建一个新的Session对象返回,如果已经存在则直接将此Session返回。(根据cookie传过来的id寻找有无session)
2.如何在session中存取数据:
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
3.Session对象的生命周期:
创建和销毁:
创建:在获取session对象时通过request.getSession()方法时候创建。
销毁:(1)服务器非正常关闭时
(2)Session会话过期/失效
默认30分钟,在web.xml文件中配置失效时间

30

(3)手动销毁session
通过session.invalidate();
作用范围即:一次会话中,所有资源公用一个session对象。
浏览器关闭不代表session服务器销毁,没有任何关系。
二、什么是cookie:
cookie:将数据存储在客户端的技术。
1.服务器端如何将cookie发送到客户端:
(1)创建一个cookie:
Cookie cookie=new Cookie(String name,string value)
这时候创建的cookie就会以响应头的当时发送给客户端。
(2)设置cookie在客户端的持久化时间:
cookie.setMaxage(int num)
如果不设置持久化时间,那么cookie的数据就会存储在浏览器的内存中,浏览器关闭,那么cookie数据就会销毁;如果设置了持久化时间,那么cookie数据保存在浏览器的磁盘文件中,只有当超过持久化时间的时候,cookie数据才会销毁。
(3)设置cookie的携带路径:
cookie.setPath(String path)
不设置的话,cookie信息会在访问产生此消息的web资源的路径时都携带上cookie信息。
(4)向客户端发送cookie:
reponse.addCookie(Cookie cookie)
(5)删除客户端的cookie:
设置持久化的时间为0.
2.服务器端如何接受客户端携带的cookie信息:
cookie的信息是以请求头的方式发送到服务器端的。
(1)通过request获取所有的cookie:
Cookie[] cookies=requet.getCookies();
(2)对获取到的cookies数组进行遍历:
for(Cookie cookie:cookies){
if(cookie.getName().equals(cookieName))
String cookieValue=cookie.getValue();
}
客户端如果禁止了cookie还能实现session吗?
不能,因为实现session需要基于cookie传过来的id去寻找数据。
在关闭cookie的情况下使用session:
1.在.ini配置文件中设置"session.use_trans_sid=1",或者编译时打开“–enable-tarns-sid”选项,让php自动跨页传递sessionid。
2.手动通过url传值、使用隐藏表单传递sessionid。
3.用文件、数据库形式保存sessionid,在跨页过程中手动调用。

你可能感兴趣的:(Seesion,Cookie)