Cookie和Seesion

既然学习了javaweb,我就确定避免不了要去接触cookie和seesion下面简单的描述一下二者:css

cookie:html

在网站登陆的时候,会有一个再次网站下记住密码的选项,若是你选上了,下次登陆的时候就不用再从新输入帐号密码,java

这就cookie实现的一个小功能。web

客户端经过浏览器向服务器发出请求(记住帐号密码)服务器响应客户端给客户端发送一个大约4kb左右的文档存放在客后端

户端浏览器当中,这个文档就属于一个cookie,当用户再一次打开浏览器登陆时,这时就须要你从新输入帐号密码浏览器浏览器

直接从cookie中取值。安全

cooki的生命周期默认状况下:从客户端开启浏览器到关闭浏览器 (能够设置cookie的有效期,从而实现永久有效);bash

建立 cookie :           Cookie c = new Cookie("name", "value");服务器

设置有效期:            c.setMaxAge(24 * 60 * 60);   //以秒为单位 这个是一天的时长   cookie

设置有效路径:         c.setPath("127.0.0.1");

保存cookie:             response.addCookie(c);     //使用response将cookie保存在客户端浏览器里

删除cookie:             Cookie cookie = new Cookie(WebConst.USER_IN_COOKIE, "");

            cookie.setMaxAge(0);response.addCookie(cookie);//将cookie有效求设置为零

有一段实例代码可供参考:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           Cookie[] cookies = request.getCookies();
           if(cookies == null) {
               Cookie cookie = new Cookie("admin", "123456");
               cookie.setMaxAge(7*24*3600);
               response.addCookie(cookie);
               System.out.println("cookie为空,跳转登陆页面");
               response.sendRedirect("Login.jsp");
           }else {
                 String name = request.getParameter("name");
                 String pwd = request.getParameter("pwd");
                for (Cookie cookie1 : cookies) {
                    System.out.println("用户名:"+cookie1.getName()+"密码:"+cookie1.getValue());
                    if (name.equals(cookie1.getName()) && pwd.equals(cookie1.getValue())) {
                        System.out.println("cookie不为空,跳转成功页面");
                        request.getRequestDispatcher("s.jsp").forward(request, response); 
                    }else {
                        request.getRequestDispatcher("NewFile.jsp").forward(request, response);
                    }
                }
            }
            
    }

seesion:

            seesion与cookie不一样,seesion是创建在服务器的一个会话,这里讲通俗一点,seesion就至关于一个会议室,

当客户端和服务器要进行交流的时候,服务器就会分配一个小房间给他们两个进行交流,这个小房间当服务器或者客

户端任何一方退出的时候(即服务器关闭或者客户端关闭),这个小房间就会被服务器收回。这就是一个seesion会话

因为seesion是在服务端里面的一种存在,咱们是不可见的因此seesion比cookie更加安全:

seesion常见的几种方法:

一、public void setAttribute(String name,String value)设定指定名字的属性的值,并将它添加到session会话范围内,若是这个属性是会话范围内存在,则更改该属性的值。



二、public Object getAttribute(String name)在会话范围内获取指定名字的属性的值,返回值类型为object,若是该属性不存在,则返回null。



三、public void removeAttribute(String name),删除指定名字的session属性,若该属性不存在,则出现异常。



四、public void invalidate(),使session失效。能够当即使当前会话失效,原来会话中存储的全部对象都不能再被访问。



五、public String getId( ),获取当前的会话ID。每一个会话在服务器端都存在一个惟一的标示sessionID,session对象发送到浏览器的惟一数据就是sessionID,它通常存储在cookie中。



六、public void setMaxInactiveInterval(int interval) 设置会话的最大持续时间,单位是秒,负数代表会话永不失效。



七、public int getMaxInActiveInterval(),获取会话的最大持续时间,使用时候须要一些处理

不要混淆 session 和 session 实现。

下面一段话来自知乎

原本 session 是一个抽象概念,开发者为了实现中断和继续等操做,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生
出“会话状态”,也就是 session 的概念。而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。能够认为是 session
的一种后端无状态实现。而咱们今天常说的 “session”,是为了绕开 cookie 的各类限制,一般借助 cookie 自己和后端存储实现的,一种更高
级的会话状态实现。因此 cookie 和 session,你能够认为是同一层次的概念,也能够认为是不一样层次的概念。具体到实现,session 由于
session id 的存在,一般要借助 cookie 实现,但这并不是必要,只能说是通用性较好的一种实现方案。
做者:欲三更 连接:https:
//www.zhihu.com/question/19786827/answer/84540780

上次写上面的cookie代码的时候,要验证输入框的的值是否和存的cookie相同时   我发现浏览器会同时会保存两个cookie

后来百度才了解到有一个cookie是seesion_id做为cookie保存在浏览器里,当结束此次seesion会话是第一个cookie也会随

着摧毁。

参考连接:https://www.jianshu.com/p/efee53ccd12e

                  http://www.javashuo.com/article/p-eeltcjba-cx.html

:我的学习QAQ ,若有错误,还请指点,谢谢qwq

相关文章
相关标签/搜索