zoukankan      html  css  js  c++  java
  • servlet中Session的用法

    ## (1)什么是Session?
    服务器端为了保存用户的状态而创建的一个特殊的对象(即session对象)。
     
            当浏览器第一次访问服务器时,服务器会创建session对象(该
        对象有一个唯一的id,一般称之为sessionId),接下来服务器会将
        sessionId以cookie的方式发送给浏览器。
            当浏览器再次访问服务器时,会将sessionId发送过来,服务器
        就可以依据sessionId找到对应的sessinon对象。
     
    ## (2)如何获得session对象?
    ### 1)HttpSession s = request.getSession(boolean flag);
     
        HttpSession是一个接口。
        a.当flag为true时,先查看请求当中有没有sessionId,如果没有,就会
        创建一个session对象。如果有sessionId,就会依据sessionId去查找
        对应的session对象,如果找到了就返回该对象,找不到则会创建一个
        新的session对象。
        b.当flag为false时,先查看请求当中有没有sessionId,如果没有,返回
        null。如果有sessionId,就会依据sessionId去查找对应的session对象,如果找到了就返回该对象,找不到,返回null。
     
    ![](session.png)
     
    ### 2)HttpSession s = request.getSession();
     
        等价于 request.getSession(true);
     
    ## (3)常用方法
        session.setAttribute(String name,Object obj);
        Object session.getAttribute(String name);
        session.removeAttribute(String name);
     
    ![](count.png)    
     
    ## (4)session超时
    a.什么是session超时?
     
        服务器会将空闲时间过长的session对象删除掉。
        注:
            为了节省内存空间。
            大部分服务器默认的超时时间长度为30分钟。
     
    b.如何修改超时时间长度?
     
        方式一 修改web.xml
            <session-config>
                <session-timeout>30</session-timeout>
            </session-config>
     
        方式二 编程的方式
     
            session.setMaxInactiveInterval(int seconds);
            设置两次请求之间最大的时间间隔
     
    ## (5)删除session
        
        session.invalidate();  
     
        
        
    ## (6)session验证
    step1. 登录成功之后,在session对象上绑订一些数据,比如
     
        session.setAttribute("user",user);
     
    step2.当用户访问需要保护的资源时,进行session验证,比如
     
        Object obj = session.getAttribute("user");
        if(obj == null){
            //没有登录
            response.sendRedirect("login.jsp");
        }
     
    ![](checklogin.png)
     
     
    ## (7)比较session与cookie
    session相对于cookie,优点:安全、可以存放大量的数据、支持更丰富的
    数据类型。缺点是session会占用服务器端的内存空间,如果session对象
    过多,会占用过多的内存空间。
     
     
    # 练习
    写一个servlet,输出用户上一次访问的时间。如果是第一次访问,输出
    “你是第一次访问”。

  • 相关阅读:
    【python】学习笔记10-ddt数据驱动
    【python】学习笔记10-装饰器
    【Python】学习笔记8-多线程多进程
    【Python】学习笔记7-异常处理try。。except .. as e ....else
    【Python】学习笔记6-补充Flask模块:登录接口,mysql数据库、存redis-sesson、存浏览器cookie
    【Python】学习笔记6-创建Excel:xlwt,读取Excel:xlrd ,修改Excel:xlutils
    【Python】学习笔记6-网络编程urllib,request,请求rul
    【Python】学习笔记5-利用flask来mock接口
    【Python】学习笔记5-操作redis数据库redis
    【Python】学习笔记5-模块pymysql操作mysql数据库
  • 原文地址:https://www.cnblogs.com/package-java/p/10240921.html
Copyright © 2011-2022 走看看