session和cookie

来源:互联网 发布:sql 删除表外键约束 编辑:程序博客网 时间:2024/06/15 20:20

/*
会话知识:
 Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用
浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自
的数据了。
 Session是服务端技术,利用这个技术,服务器在运行时可以为每个用户的浏览器创建一个其
独享的Session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把
各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源再从用户
各自的session中取出数据为用户服务。
 

Cookie技术:javax.servlet.http.Cookie是Servlet API中的路径
 setMaxAge(millions)设置cookie的生命期,如果不设置,其生命期即使浏览器的进程期限
 getMaxAge()获取cookie的生命期

cookie的一些小细节:
 1、一个cookie只能标记一种信息,它至少含有一个标识该信息的名称和设置值
 2、一个web站点可以给一个web浏览器发送多个cookie,一个web浏览器也可以存储多个web站点
提供的cookie。
 3、浏览器一般只允许存放300个cookie。每个站点最多存放20个cookie,每个cookie的大小限制
为4kb。
 4、如果创建一个cookie。并将它发送得到服务器,默认情况下它是一个回话级别cookie(浏览器
进程),退出浏览器就会被删除。若希望浏览器将cookie存储到硬盘上,则需要使用setMaxAge,并给出
一个以秒为单位的时间,将最大时效设为0,则命令浏览器删除该cookie
 5、注意,删除cookie时,path必须一致,否则不会删除。


应用:显示上次浏览过的商品
 一个servlet代表首页,另一个servlet代表曾经浏览过的商品。
 在myeclipse中敲的代码


Session:服务器会为每一个浏览器创建一个会话对象。注意:一个浏览器占一个session对象(默认情况)
注意:一个session只为一个会话服务,新开一个浏览器,其他的浏览器中的session是获取不到的
Session的生命周期:
 1、创建:浏览器请求服务器,后台执行getSession方法代码时,服务器创建session
getSession的两个重载方法,有一个参数为boolean的方法。用以表示是否新建session。一般情况下
跟false,表示不创建session,只获取session。显示购物车的时候会用到这个方法。
 2、销毁:会话结束,session并未被销毁;默认30分钟不使用时,才会被销毁.
自定义配置session的存在时间:1、web.xml中配置 2、在程序中用代码设置
 
 Session和Cookie的区别主要有三个:
  1、Cookie是把用户数据写给用户的浏览器
  2、Session技术把用户数据写到用户独占的Session中
  3、Session对象由服务器创建,开发人员可以调用Request对象的getSession方法得到session对象。
 程序原理图,做到理解。
 实例代码在myeclipse实现


Session的应用:
1、用于用户登陆。
2、表单提交。防止表单多次提交
 应用场景:在注册的时候。有个问题就是,如何防止多次提交?
 两种解决方案:1、用javascript实现防止多次提交 2、在服务器端阻止多次提交。
javascript:
 <script type="text/javascript">
 var iscommitted = false;
 function dosubmit()
 {
  if(!iscommitted){
   iscommitted = true;
   return true;
  }else{
   return false;
  }
 }
 </script>
服务器端的解决方法是用定义一个令牌(单例模式)

3、session实现验证码的校验

 

总结规律:
 什么情况下采用request容器:一个数据产生之后,,用完之后就没用了,这时候采用request容器
 什么情况下采用session容器:一个数据产生之后,用完之后稍后还要用到,这个时候采用session容器
 什么情况下采用servletContext容器:一个数据产生之后,数据给用户看了之后,等会还要用,
而且不仅该用户用,其他人还要用,此时就用servletContext容器。


*/

0 0