Cookie 和 Session

1.Cookie:

  1>完成会话跟踪的一种机制:采用的是在客户端保存http信息的一种方案

  2>Cookie是浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件

  3>一旦浏览器保存了Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cooike传送给服务器

         

 

  4>底层的原理:WEB服务器通过在HTTP响应消息增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过HTTP请求信息中增加Cookie请求头字段将Cookie回传给WEB服务器

2.Cookie相关的API

向客户端浏览器写入Cookie

            //1.创建一个Cookie对象
            Cookie cookie = new Cookie("name","lijian");
            //setMaxAge设置cookie的最大持久化时效,以秒为单位    0为立即删除 负数为不存储  正数为该cookie的存储时间
            cookie.setMaxAge(30);
            //2.调用response 的方法把cookie传给客户端
            response.addCookie(cookie);    
View Code

 

默认情况

Cookie的作用范围可以当作当前目录 和 当前目录的子目录但不可以 作用于当前目录的上一级目录

//设置Cookie的作用范围
//cookie.setPath(request.getContextPath());

重浏览器读取Cookie

        //显示最近浏览的5本书
        Cookie [] cookies = request.getCookies();
        //获取Cookie
        //筛选出符合条件的
        //显示cookieValue
        if(cookies != null && cookies.length > 0){
            for(Cookie c: cookies){
                String cookieName = c.getName();
                
                if(cookieName.startsWith("ATGUIGU_BOOK_")){
                    out.println(c.getValue());
                    out.print("<br>");
                }
            }
        }
读取Cookie

 

3 会话cookie和持久化cookie:

1》 如果不设置过期时间,则表示cookie生命周期就是浏览器会话周期。只要关闭浏览器窗口,cookie就会消失。这种生命为浏览器会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里

2》如果是指过期时间,浏览器就会把cookie保存在硬盘上,关闭浏览器后再打开这些cookie依然有效直到超过设定的过期时间

4.两个应用:

1>自动登录:

2>显示浏览过的商品信息

 

 

2.Session

1.概念

  1>HttpSession :在服务器端保持HTTP状态信息的方案 和 其对应的是COOKIE

  2>产生Httpsession 过程:当程序为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里面是否包含一个session标识(sessionID),如果包含一个sessionId说明此前已经为此客户创建过session,

   服务器按照sessionId把这个session检索出来使用(如果检索不到创建一个,可能服务端已经删除了,或者session已经过期)

   如果请求不包含session,则为此客户创建一个session并且生成一个session相关的sessionId,这份sessionId会在本次访问中返回给客户端保存

  3>使用Cookie来跟踪session:sessionId来区分不同的客户,session是以cookie或URL重写为基础,默认使用cookie来实现,系统会创建一个名为jsession的输出cookie,这称之为session cookie,session cookie是存储在浏览器上并不是写道硬盘上,通常看不到sessionID,

2.生命周期

  1>创建一个session :

    若第一次访问的JSP页面,且该页面page指定的session属性为false就不会创建session

    server端调用HttpServletRequest.getSestion(true)或者HttpServletRequest.getSession()这样的语句才会被创建

    若访问的JSP页面,page指定的session属性为true ,这服务器制动会给该页面分配一个 HttpSession对象

  2>销毁一个

    调用方法 HttpSeeeion.invalidate()

    超过最大时效

    服务器进程被停止(或当前WEB应用被卸载)

    注意:关闭浏览器只会使在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效

  3>API

    获取session对象: request.getSession(); 或 request.getSession(boolean create)

    属性相关的:setAttribute,getAttribute,removeAttribute

    使Httpsession失效的incalidate()

    设置最大时效的 getMaxInactiveInterval()   

  4>URL重写

    是servlet规范引用的一种补充会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器连续会话

    将会话表示一参数的形式附加在超链接地址后面的技术成为URL重写

    代码

    

    <a href="<%=response.encodeURL("login.jsp") %>">重新登录</a>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <a href="<%=response.encodeURL("logout.jsp") %>">注销</a>

 

 

3.API

 

 

4.URL重写

 

posted @ 2020-03-16 23:07  野香蕉  阅读(75)  评论(0编辑  收藏  举报