销毁的意思?不是清空。而是使之失效;

一个奇怪的问题:退出系统的时候,按说ServerletListener监听到session的销毁,应该关闭掉session,并且在此之前会销毁session里面的东西,可是我发现退出系统的时候,这些销毁动作并没有产生。

查查资料,才明白,原来在userLogoutaction里面只清空了webwork的session;并没有销毁session;

分别通过一下语句:

ActionContext.getContext().getSession().map.clear();//session清空

ServletActionContext.getRequest().getSession().invalidate();//session失效

资料如下:

由于WebWork对request,parameter,Session和Application都进行了封装,将这些隐含的对象封装成了相应的Map,如RequestMap,ParameterMap,SessionMap和ApplicationMap,而这些Map就组成了ActionContext,因此我们通常都不再需要与request,session这些底层的对象打交道了;

事实上,对于SessionMap的处理即是对Session的处理了。我们可以通过ActionContext的静态方法getContext返回一个ActionContext的实例,然后再调用其getSession方法获得SessionMap,接着就可以利用put和get方法对session进行读写的操作了。

而在页面上,我们可以通过以下的方式对session进行操作:

#session.name表示从SessionMap中取得与"name"这个key对应的对象,实际上是调用了如下的statement:ActionContext.getContext().getSession().get("name"),并且进行了类型的转换。

又如:

则是在SessionMap中获得了Player对象之后,并调用类Player的getter方法:getName()获得name属性。

简而言之,为了能够降低与部署环境的耦合程度,WebWork将Servlet的隐含对象进行了封装,这在很大程度上简化了开发的工作。而且WebWork也提供了类ServletActionContext,我们通过这个类中的getRequest方法获得原始的HttpServletRequest,然后就可以对request和session这些底层对象进行操作了。但是,一般情况下,利用ActionContext.getSession()可以完成几乎所有的工作了,我们又为什么要去碰那些底层的东西呢?因此我们应该优先考虑使用SessionMap,而不是底层的session。

另外一个需要注意的问题,就是SessionMap和隐藏对象session的作用域是不同的。也就是说,通过 ActionContext.getContext().getSession().put("name","Fantasy Soft"),往SessionMap中写入了与"name"这个key相对应的内容,但是在页面上通过session.getAttribute("name")得到的将会是null。

linux 清空session,webwork 之销毁session相关推荐

  1. session mysql java_PHP自定义session处理方法,保存到MySQL数据库中

    我们都知道,session是为了解决因特网的无状态属性而创造出来的.我们可以用session这种会话管理机制来构建购物车.监控站点网络访问,甚至还可以跟踪某一个用户具体是如何使用你的应用的.PHP默认 ...

  2. php删除session中的值,PHP中session变量的销毁

    1.何为session?相当于一个客户端(可以是浏览器.app.ftp等其他,而且同一个浏览器多开几个又算是不同的客户端)对服务器的一个访问,这个期间服务器为此建立一个唯一的标示(session_id ...

  3. php session 释放,php中删除Session和销毁Session的方法

    删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问.session_start(); $_SESSION['name'] = 'jobs'; ...

  4. php销毁session退出登陆笔记

    PHP退出登陆需要三步骤: 1.清空session $_SESSION=array(); 2.销毁客户端设置的cookie setCookie("PHPSESSID"," ...

  5. 使用 session_destroy() 销毁session文件时 报 Trying to destroy uninitialized session 错误解决办法

    在使用  sessiodestroy() 销毁session文件的时候,必须要先使用sessionstart()   来开启session 后才能删除session文件

  6. Linux下Nginx+Resin负载均衡,session问题解决实例

    Linux下Nginx+Resin负载均衡,session问题解决实例 转载:http://blog.chinaunix.net/uid-14007440-id-3150269.html https: ...

  7. java怎么销毁session_「销毁session」java中session和cookie的创建与销毁

    1.后端创建cookie Cookie cookName =newCookie("cookName", cookValue);cookName.setMaxAge(60*60*24 ...

  8. java 主动销毁session,关于java:问题Session的销毁方式到底有哪些

    问题:Session的销毁形式到底有哪些? Session,作为咱们离不开的后盾的技术,它的呈现次要是为了解决 Http 协定的无状态特点,用于解决用户状态的存储问题,而往往对于存储来说都会波及到一个 ...

  9. php设置session 生命周期,设置session的生命周期(php)

    PHP中,Session变量保存在服务器端(默认以文件格式保存),而Session ID以cookie形式保存在客户端. 销毁session的方法有2种 第一种是通过程序 session_destor ...

  10. php session gc_maxlifetime,PHPsession 有效期 session.gc_maxlifetime

    PHPsession 有效期 session.gc_maxlifetime 一个已知管用的方法是, 使用 session_set_save_handler, 接管所有的 session 管理工作, 一 ...

最新文章

  1. 基准分类模型、分类应用(多分类数字识别、疾病预测、欺诈检测)、监督学习总结
  2. linux使用X11捕捉鼠标,如何在Linux下合法地以编程方式捕获第二个鼠标或轨迹球,X?...
  3. Oracle 数据库linux下sql命令行按回退键变成^H字符输入问题解决方法
  4. 04-CA/TA编程:hash demo
  5. sklearn文档-第一次笔记
  6. [转载]设计模式解密(23) - 总结篇
  7. 快速排序的两种实现方法(js)
  8. 学习iPhone开发中 sqlite3的使用
  9. 【Web前端】hexo博客管理
  10. java Web常用过滤器
  11. Android Trace View使用
  12. devexpress,dotnetbar控件
  13. Java类加载机制由浅入深
  14. 语音合成(TTS)论文优选:HIERARCHICAL PROSODY MODELING FOR NON-AUTOREGRESSIVE SPEECH SYNTHESIS
  15. 常用的数字正则表达式
  16. linux脚本的注释符号是什么,Shell中的变量和符号
  17. 微信亲戚备注分组名称_【微信分组备注名称大全】qq分组备注名称大全
  18. python 导入的nan怎么解决_如何处理python里的Nan和None
  19. Halcon根据两条线拟合中线
  20. R 两组样本t检验 wilcoxon检验、卡方、fisher精确检验

热门文章

  1. linux 蓝牙编程avrcp,bluetooth(蓝牙) AVRCP协议概念及代码流程解析
  2. 乐优商城(02)--商品分类
  3. win10c盘扩容_三招给你的C盘瘦身
  4. [渝粤教育] 淄博职业学院 市场营销 参考 资料
  5. C语言科学计数法中的一个小问题
  6. 群晖3617可以有几个网卡_一步到位,购入群晖920+和它的小伙伴们
  7. 安装GitHub安装步骤
  8. 计算机网络实验——华为eNSP模拟器常用命令总结(总结的非常详细( •̀ .̫ •́ )✧快来看啊)
  9. 手机迅雷打不开html,迅雷打不开了怎么办
  10. 服务器 '' 上的 MSDTC 不可用。