zoukankan      html  css  js  c++  java
  • Session管理

    Session的作用是维持一个会话的连接。每一个session有一个sessionID。

    浏览器第一次发送请求给服务器,服务器查找请求中的Cookie有没有JsessionID,如果有则根据ID找到session,就将请求与之前的会话联系起来了,

    否则,服务器新建一个session,将sessionid通过cookie传给客户端,这样,每次客户端都会传回这个cookie,服务端就能找到jsessionID,联系会话。

    由于cookie可能会被禁用,可以使用以下的方式

    1,URL重写

    在网址后面增加参数,作为传递的依据.     格式是: 地址?k=v&k=V

    2,使用隐藏的表单来传递数据  type='hidden'即可

    3,上面的两种方法适合于不需要跨越很多页面的情况。使用cookie解决这些问题。

    不能直接删除一个cookies,要想删除只能新创建一个同名 的cookie,然后设置maxAge=0;

    Cookie cookie=new Cookie("K","V");
    cookie.setMaxAge(0);
    response.addCookie(cookie); 
    

    4,HTTPSession

    HttpSession中的值是保存在内存中的,可以把任意的java类型的数据写入HttpSession中。
    与Cookie不一样,HttpSession的值不会发送给客户端,而是保存在服务器内存。Servlet容器为每一个HttpSession创建一个唯一的标识符——jsessionid,标识符传递到客户端,客户端之后只需要把标识符发回来就可以了。一般通过Cookie或者将jsessionid作为参数放在URL的后面。

             HttpSession session=req.getSession();
        
            if(session.isNew()){
                System.out.println("新的Session");
                session.setAttribute("Time",System.currentTimeMillis());
            }
            System.out.println(session.getAttribute("Time"));
            System.out.println(session.getId());
            
            //用户最后一次离开之后,这个Session还能存活10s,10s之后服务器就把那个用户给忘记了。
            //值设为0,session就永远有效
            session.setMaxInactiveInterval(10);
    //使得这个Session强制过期
    session.invalidate();

      

  • 相关阅读:
    wampserver的安装及使用配置方法
    关于数据未渲染完,要获取document高度问题——ajax全局事件
    浏览器内核及对应兼容性的处理问题
    [PHP]php缓冲 output_buffering的使用详解
    [PHP]PDO各方法在发生MYSQL断开时的反应
    [算法]浮点数在内存中的存储方式
    [PHP]session回收机制及php.ini session生命期
    [Linux][HTTP] Cookie和Set-Cookie
    [MySQL]多表关联查询技巧
    [MySql]索引的一些技巧
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6890152.html
Copyright © 2011-2022 走看看