随笔一(会话机制)

1、cookie

在客户端保持状态的方案,好比会员卡,初始的时候服务器会给用户一个cookie,在下一次请求服务器时就可以在请求头里携带cookie,从而认证身份,达到持续连接的效果。

cookie在一段时间后就会失效。

doget():

//发送cookie给客户端
        Cookie cookie = new Cookie("aa", "bb");
        //给响应,添加一个cookie
        response.addCookie(cookie);
        response.getWriter().write("请求成功了...");
        
        
        
        //获取客户端带过来的cookie
        Cookie[] cookies = request.getCookies();
        if(cookies != null){
            for (Cookie c : cookies) {
                String cookieName = c.getName();
                String cookieValue = c.getValue();
                System.out.println(cookieName + " = "+ cookieValue);
            }
        }
        

(cookies好似一个map表)

(用cokie记录浏览记录的话,可以在value上修改增长该字符串)

设置相关参数:

        //关闭浏览器后,cookie就没有了。 ---> 针对没有设置cookie的有效期。
        //    expiry: 有效 以秒计算。
        //正值 : 表示 在这个数字过后,cookie将会失效。
        //负值: 关闭浏览器,那么cookie就失效, 默认值是 -1
        cookie.setMaxAge(60 * 60 * 24 * 7);
        
        //赋值新的值
        //cookie.setValue(newValue);
        
        //用于指定只有请求了指定的域名,才会带上该cookie
        cookie.setDomain(".itheima.com");
        
        //只有访问该域名下的cookieDemo的这个路径地址才会带cookie
        cookie.setPath("/CookieDemo");

 

2、session(会话)

在服务端保持状态的方案,在服务器上用它来存储数据(比在客户端的cookie安全),也是servlet/jsp的一个内置对象(作用域),可以存储数据,数据会在与对应的用户会话时期有效。

(1)session信息放在cookie里,由cookie得知用户的sessionID

(2)cookie被浏览器禁止了?可以以get方式放在url后面

常用api:

        //得到会话ID
        String id = session.getId();
        
        //存值
        session.setAttribute(name, value);
        
        //取值
        session.getAttribute(name);
        
        //移除值
        session.removeAttribute(name);
    //强制干掉会话,里面存放的任何数据就都没有了。
    session.invalidate();

* 创建和销毁
调用request.getSesion创建 服务器关闭 ,或者 会话超时(默认30分钟)

 

posted @ 2019-03-13 17:05  hzhuan  阅读(122)  评论(0编辑  收藏  举报