## (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,输出用户上一次访问的时间。如果是第一次访问,输出
“你是第一次访问”。

servlet中Session的用法的更多相关文章

  1. thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 ? ...

  2. 2016-1-30 Servlet中Session管理(Sesssion追踪)

    Session管理(Sesssion追踪)是Web应用程序开发中非常重要的一个主题.这是因为HTTP是无状态的,在默认情况下,Web服务器不知道一个HTTP请求是来自初次用户,还是来自之前已经访问过的 ...

  3. C#中Session的用法详细介绍

    Session模型简介 在学习之前我们会疑惑,Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每 个用户首次 ...

  4. [javaEE] Servlet中Session的使用

    Session是一个域 作用范围:当前会话范围 生命周期:当程序第一次调用request.getSession()创建出客户端的session对象,30分钟没有操作认为超时,这个可以在web.xml中 ...

  5. CI中SESSION的用法及其注意

    销毁 Session要清除当前 session: $this->session->sess_destroy(); 注意: 此函数应该是最后被调用的.即使闪出变量已不再有效.如果你只想让某几 ...

  6. servlet中session的使用

    1.获取session HttpSession session=request.getSession(); session.setAttribute("variety", vari ...

  7. servlet 中session的使用方法(创建,使用)

    创建: protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, ...

  8. Spring MVC中Session的正确用法<转>

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  9. 【转】Spring MVC中Session的正确用法之我见

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

随机推荐

  1. uploadifive上传文件

    uploadifive是一个款基于H5的上传文件的插件.优点是,可以在PC端,也可以在手机上进行操作.缺点是,IE9以下的兼容性不好. View: <!DOCTYPE html> < ...

  2. 杭电 2639 Bone Collector II【01背包第k优解】

    解题思路:对于01背包的状态转移方程式f[v]=max(f[v],f[v-c[i]+w[i]]);其实01背包记录了每一个装法的背包值,但是在01背包中我们通常求的是最优解, 即为取的是f[v],f[ ...

  3. hdu 1072 广搜(逃离爆炸迷宫)

    题意: 在n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重启器.定时炸弹的时间是6,人走一步所需要的时间是1.每次可以上.下.左.右移动一格.当人走到4时如果炸弹的时间 ...

  4. elk集群配置配置文件中节点数配多少

    配置elk集群时,遇到,elasticsearch配置文件中的一个配置discovery.zen.minimum_master_nodes: 2.这里是三配的2 看到某一位的解释是这样:为了避免脑裂, ...

  5. BZOJ 1009 [HNOI2008]GT考试 (KMP+矩阵乘法)

    ---恢复内容开始--- 题目大意:给定一个由数字构成的字符串A(len<=20),让你选择一个长度为n(n是给定的)字符串X,一个合法的字符串X被定义为,字符串X中不存在任何一段子串与A完全相 ...

  6. 流媒体应用程序Mobdro或存在安全隐患

    Mobdro是一款流媒体应用程序,可以安装在任何Android设备上,包括手机,平板电脑,亚马逊的Fire TV Stick和Google的Chromecast.它现在已经流行了一段时间,特别是在围绕 ...

  7. 洛谷P1004 方格取数

    网络流大法吼 不想用DP的我选择了用网络流-- 建模方法: 从源点向(1,1)连一条容量为2(走两次),费用为0的边 从(n,n)向汇点连一条容量为2,费用为0的边 每个方格向右边和下边的方格连一条容 ...

  8. 【codeforces 799D】Field expansion

    [题目链接]:http://codeforces.com/contest/799/problem/D [题意] 给你长方形的两条边h,w; 你每次可以从n个数字中选出一个数字x; 然后把h或w乘上x; ...

  9. java深克隆与浅克隆

    2015.9.19 6:45   星期五    1

  10. MRv2 工作机制 、 公平调度器、MR压缩、边数据

    对于节点数超过 4000 的大型集群,前一节描述的 MapReduce 系统开始面临着扩展的瓶颈. 2010 年 Yahoo 的团队开始设计下一代的 MapReduce. (Yet Another R ...