struts返回值的不合理使用
今天写了一个SessionListener来监听session的创建和销毁情况,有意外收获,发现系统的一个bug:
当关闭浏览器时,容器会销毁当前session,而后新建一个同sessionId的session。
经过分析,发现session的销毁是由退回操作时应用程序进行的失效操作引发。而后session的新建是由应用程序调用了logout操作后struts的返回值想后台又发起了一个请求导致的session的新建,而该session只能等待session过期才能自动销毁了。
这时可采用关闭窗口和logout有区别对待即可,logout有返回值,而关闭窗口时无返回值。或者在主页添加
??