嘿嘿 小弟 再来说说 Cookie 和Session 老话一句 ·· 忘大拿们不要吝啬批评和建议哦
首先 什么是Cookie 呢?
Cookie 就是 本意指的是“ 点心” 还是就着牛奶一起吃的点心哦。但是呢· 在咱学的这个专业里cookie 的意思当然就变得稍微专业点了 ,cookie 指的是 少量信息的意思。
那么少量指的是多少的量呢?
这里的少量指的是4k, 的量。当然针对每个站点 在同一台机器上的cookie 的数量也是有限制的,通常允许每个站点在同一台机器上放上20 个cookie
那么什么又是Session 呢?
Session 是服务器上的一小块内存,至于具体的大小 就不好得到了,Session 的个数大家可以不必担心,session 是可以放心使用的。但是Session 的正常使用是在浏览器没有禁用Cookie 的情况下的。若浏览器禁用了Cookie 我们也只能用URI 重写的方式来使用Session.(cookie 中存放的是Session 的SessionID)
下面我们来看看几个cookie 常用的API :
1: 创建一个Cookie 用 Cookie cookie = new Cookie(“key”,value); 呵呵这样new 的方式是不是很像我们学过的map 呢?
2 :在一个action 中获得Cookie 的方法是通过 HttpRequest 对象 request 获得一个 Cookie 的数组 Cookie [] cookies = request.getCookie();
Cookie.setMaxAge (int age) age
指的是时间的长度且是以秒为最小的单位的该函数指定了Cookie 在浏览器上能够” 存活” 的最长的时间
Age>0
指的是在Age 秒后Cookie 失效
Age=0
指的是立即删除
Age<0
则是将Cookie 先缓存在浏览器的缓存中,所以该Cookie 在浏览器关闭以后就失效了。
Cookie.setPath(“uri”);
这个是一个比较恶心的东西, path 中的参数设置得小心了。使用 Cookie 时千万别弄错了哦!要不然就出事了 .Cookie 的访问 是在当前路径和当前路径的子路径下都可以访问。
Cookie.getName() 返回这个 Cookie 的名字如上述的“ key ”值 , 而 Cookie.getValue() 的值 就是上述的“ value” 的值了
删除 Cookie 的操作是 New 出一个与删除的 Cookie 的 name 相同的 Cookie 这里的 name 指的是那个键的值,之后再将 Cookie.setMaxAge (int age)
中的 age 设置为零 再保存就OK 了。
Session
常用的Api :
得到一个Session 的方法是 HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
找与当前客户端配对的session 对象找不到则新建一个。
Session.isNew
();判断该对象是不是新创建的
给Session 赋值的方法是session.setAttribute(“key”,value);
得到一个Session 的值的方法是 session.getAttribute(“key”);
设置Session 在服务器端的有效时间
session.setMaxInactiveInterval(time);
当然如果不设置这个的话 在 tomcat 的 conf 目录下的 web.xml 中对 Session 的有效时间做了一个初始化的工作
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Session 的有效范围是
1 建立Session 对象的窗口中有效。
2. 建立Session 对象的窗口中新开链接的窗口
当浏览器的 Cookie 被禁止时 Session 就无法通过 Cookie 来存 SessionID 了,则新得到的 Cookie 当场就失效,为了保证 Session 的正常使用就要用到一个方法重写 URI 使得浏览器每次提交请求时,在地址栏的末尾都会带上一个 Session ID 从而本机又可以对服务器端的 Session 进行了。
Response.encodeURI(request.getRequestURI.toString());
即在转到某个页面时或者是提交时都会提交隐藏的一列,该效果是强制的将 Session id 地址强行的放在地址栏中 从而达到客户端与服务器端的 Session 不失效的效果。