zoukankan      html  css  js  c++  java
  • Session

    Session

    session 运行原理

    1. 接受到客户端的请求后,服务器端就会创建一个 session对象。session对象保存了所有用户的信息.当创建一个session对象时 会产生一个sessionId的一个编号与该session对象关联。

    2. 服务器通过cookie的方式把产生的sessionId 发送到客户端(浏览器)

    3. 当客户端再次请求该服务器中,会把该cookie中的sessionId读取出来,并放到请求头中发送到服务器。

    4. 服务器就可以根据客户端传过的sessionid在服务器中进行查找,来判断该请求是否是新的还是原来访问过的。

    • 注意: session必须依赖于cookie.

    //创建一个session对象
        HttpSession session =  request.getSession("布尔值");
        //如果过来的请求是原来访问过的,则使用原来的session对象
        //(默认)true :如果是一个新的请求, 则创建新的session对象
        //false:如果是一个新的请求, 则不创建新的session对象
    
    //获得创建的session的id
        String sessionId = session.getId();
        //获得的id的值就是Cookie的键的名字
    
    //往session保存值:通过键(字符串)绑定值(任意数据类型)
        session.setAttribute("键","值");
    
    //取出session中的值
        类型 value = (类型) session.getAttribute("键");
        //通过getAttribute方法取出来的值是object类型,我们还需要强制转型
    
    //删除session中的值
        session.removeAttribute("键");
    
    //返回第一次创建会话的时间
        session.getCreationTime();
    
    //返回容器最后一次得到该会话ID的请求时间
        session.getLastAccessedTime();
    
    //对于会话指定客户请求的最大间隔时间
        session.setMaxInactiveInterval(int interval);
        //以秒为单位。-1表示永不过期
    
    //返回客户请求的最大间隔时间
        session.getMaxInactiveInterval(int interval);
    
    //会话结束,当前存在在会话中的所有会话属性也会解除绑定
        session.invalidate();

    cookie 与 session的区别

     cookiesession
    地点 客户端 服务器端
    存放的数据 能存文本 存任意数据类型

    session的有效期设置

    1. 调用HttpSession接口中的setMaxInactiveInterval(int interval): 参数以 秒为单位 setMaxInactiveInterval该方式设置session的激活时间(发呆时间)

    2. 调用HttpSession接口 invalidate()方式 ,session立即失效 (安全退出的时候)

    3. 在web 应用程序中对web.xml 进行配置 <session-config>2</session-config>。配置的是全局的session的有效期。session的默认有效期为 30 分钟 --- 服务器中 conf/web.xml 中

      <session-config>
          <session-timeout>30</session-timeout>
      </session-config>
      <!--注意: 当操作了该服务器下的所属的资源, 该session它都会被重新激活.-->

    session的持久化

    1. 存在数据库中

    2. 写文件

    URL重写

    Session对象的正常使用要依赖于Cookie。URL地址重写能够取得置于Cookie中的会话,并把会话ID附加到访问应用的各个URL最后

    //url重写
        String new_url=  response.encodeURL("地址");
        //地址可以是静态的也可以是动态的
    
        PrintWriter out =  response.getWriter();
        out.print("<a  href='"+new_url+"'>test</a>");
        //对sessionURL重写的应用,在a标签中
    
    //重定向的url重写
        String url = response.encodeRedirectURL("地址");
        response.sendRedirect(url);
  • 相关阅读:
    0615-temp-python web
    ResultSet 转ArrayList
    svn与git
    日期与时间
    springboot 注解
    函数式编程
    几个O
    springboot框架中的异步执行
    JDBC
    mysql 导出表结构
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/12749363.html
Copyright © 2011-2022 走看看