Struts2中ActionContext的request,session,application的生命周期?

bbos1994 2014-09-18 12:27:32
生命周期和普通Servlet(也就是ServletActionContext)一样吗??
...全文
327 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zy_think123 2014-09-22
  • 打赏
  • 举报
回复
Session过期是从停止活动开始计算的
三种方式设置:

1. 在server.xml中定义context时采用如下定义:

<Context path="/livsorder" docBase="/home/httpd/html/livsorder"   
  defaultSessionTimeOut="3600" isWARExpanded="true"   
  isWARValidated="false" isInvokerEnabled="true"   
  isWorkDirPersistent="false"/>

2. 在web.xml中通过参数指定:

<session-config> 
    <session-timeout>30</session-timeout>   
</session-config>

其中30表示30分钟

3. 在程序中通过servlet api直接修改
HttpSession ses = request.getSession();
ses.setMaxInactiveInterval(10);
设置单位为秒,设置为-1永不过期。
zy_think123 2014-09-21
  • 打赏
  • 举报
回复
是的,但是你是可以设置的
bbos1994 2014-09-20
  • 打赏
  • 举报
回复
引用 12 楼 zy353003874 的回复:
session20分钟内有效
就算重启服务器只要二十分钟内,不关浏览器就有效?
zy_think123 2014-09-20
  • 打赏
  • 举报
回复
session20分钟内有效
bbos1994 2014-09-19
  • 打赏
  • 举报
回复
引用 10 楼 u011461314 的回复:
利用cookie标识来查找服务器上的数据。 重启服务器,session数据会不会清空
嗯嗯,,,
zhjdg 2014-09-19
  • 打赏
  • 举报
回复
利用cookie标识来查找服务器上的数据。 重启服务器,session数据会不会清空
bbos1994 2014-09-19
  • 打赏
  • 举报
回复
引用 8 楼 zy353003874 的回复:
 Session什么时候失效?   1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。   2. 调用Session的invalidate方法。   Session对浏览器的要求:   虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。   该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。
你说的很专业,但是没怎么看懂,我只想知道不关闭浏览器只重启服务器,session会失效吗?
zy_think123 2014-09-18
  • 打赏
  • 举报
回复
 Session什么时候失效?   1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。   2. 调用Session的invalidate方法。   Session对浏览器的要求:   虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。   该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。
zy_think123 2014-09-18
  • 打赏
  • 举报
回复
引用 5 楼 bbos1994 的回复:
[quote=引用 2 楼 zy353003874 的回复:] 从名字可以看出来 request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了 Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器 application:和ServletContext的生命周期一样
那为什么我将登陆的用户保存在session中,然后重启服务器,没有关闭浏览器,session中的用户还有效?重启服务器只影响application不影响session?[/quote] session是有生命周期的,你可以进行设置的
liguangwen86 2014-09-18
  • 打赏
  • 举报
回复
有的服务器是支持session持久化的,例如tomcat6,并且tomcat6默认就提供了这项功能. 你可以查看$TOMCAT_HOME$/conf/context.xml,找到 <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> 去掉注视就可以了
bbos1994 2014-09-18
  • 打赏
  • 举报
回复
引用 2 楼 zy353003874 的回复:
从名字可以看出来 request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了 Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器 application:和ServletContext的生命周期一样
那为什么我将登陆的用户保存在session中,然后重启服务器,没有关闭浏览器,session中的用户还有效?重启服务器只影响application不影响session?
bbos1994 2014-09-18
  • 打赏
  • 举报
回复
引用 3 楼 niit_java 的回复:
request,session,application 不是属于Struts2 的ActionContext Struts2中开发用到的request,session,application 仍然是servlet中的 actionContext 可以保证不依赖web组件 threadlocal对象
哦,是这样啊
paker_ma 2014-09-18
  • 打赏
  • 举报
回复
request,session,application 不是属于Struts2 的ActionContext Struts2中开发用到的request,session,application 仍然是servlet中的 actionContext 可以保证不依赖web组件 threadlocal对象
zy_think123 2014-09-18
  • 打赏
  • 举报
回复
从名字可以看出来 request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了 Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器 application:和ServletContext的生命周期一样
bbos1994 2014-09-18
  • 打赏
  • 举报
回复
求解。。。。。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧