本帖最后由 武汉分校-小舞 于 2016-3-16 13:01 编辑
【武汉校区】独家分享:session 在开发当中使用注意的细节
应用场景
由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。
Session 的概念
avax.servlet.http.HttpSession接口表示一个会话,我们可以把一个会话内需要共享的数据保存到HttSession对象中!HttpSessionrequest.getSesssion():如果当前会话已经有了session对象那么直接返回,如果当前会话还不存在会话,那么创建session并返回; HttpSessionrequest.getSession(boolean):当参数为true时,与requeset.getSession()相同。如果参数为false,那么如果当前会话中存在session则返回,不存在返回null; Session的作用(域对象)用来进行会话跟踪,进行会话跟踪的目的主要是用来传递数据. 什么是一个会话:我打开一个网站,在这个网站上面访问一个动态资源servlet,在servlet 里面调用request.getSession() 会话开始,什么时候会话结束 第一种: 服务器端的session 超时。我们可以设置服务器端session 的超时时间。 默认时间为30分钟,在web.xml 里面进行设置 <session-config> <session-timeout>30</session-timeout> </session-config> 第二种:客户端的cookie被清掉 1:打开浏览器,删除历史记录 2:我们使用在客户端使用杀毒软件也会清楚掉cookie 3:客户端的cookie 的生命周期超时.
本帖持续更新,想最快获取最新传智播客武汉讲师分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
|