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

J2EE 码拜 10年前 (2015-04-11) 1269次浏览 0个评论
 

生命周期和普通Servlet(也就是ServletActionContext)一样吗??

Struts2中ActionContext的request,session,application的生命周期?
求解。。。。。
Struts2中ActionContext的request,session,application的生命周期?
5分
从名字可以看出来

request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了

Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器

application:和ServletContext的生命周期一样

Struts2中ActionContext的request,session,application的生命周期?
5分
request,session,application 不是属于Struts2 的ActionContext  
Struts2中开发用到的request,session,application 仍然是servlet中的
actionContext 可以保证不依赖web组件 threadlocal对象
Struts2中ActionContext的request,session,application的生命周期?
引用 3 楼 niit_java 的回复:

request,session,application 不是属于Struts2 的ActionContext  
Struts2中开发用到的request,session,application 仍然是servlet中的
actionContext 可以保证不依赖web组件 threadlocal对象

哦,是这样啊

Struts2中ActionContext的request,session,application的生命周期?
引用 2 楼 zy353003874 的回复:

从名字可以看出来

request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了

Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器

application:和ServletContext的生命周期一样

那为什么我将登陆的用户保存在session中,然后重启服务器,没有关闭浏览器,session中的用户还有效?重启服务器只影响application不影响session?

Struts2中ActionContext的request,session,application的生命周期?
5分
有的服务器是支持session持久化的,例如tomcat6,并且tomcat6默认就提供了这项功能.
你可以查看$TOMCAT_HOME$/conf/context.xml,找到

<!– Uncomment this to disable session persistence across Tomcat restarts –>  
<!– 
<Manager pathname=”” /> 
–>  

去掉注视就可以了

Struts2中ActionContext的request,session,application的生命周期?
5分
引用 5 楼 bbos1994 的回复:
Quote: 引用 2 楼 zy353003874 的回复:

从名字可以看出来

request:一次请求是指向后台发起请求,后台响应,然后返回数据给前台,此时一次请求完成了,request(这次)的生命就完了

Session:其生命周期是指一次回话过程中,即从打开游览器到关闭游览器

application:和ServletContext的生命周期一样

那为什么我将登陆的用户保存在session中,然后重启服务器,没有关闭浏览器,session中的用户还有效?重启服务器只影响application不影响session?

session是有生命周期的,你可以进行设置的

Struts2中ActionContext的request,session,application的生命周期?
 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。

Struts2中ActionContext的request,session,application的生命周期?
引用 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会失效吗?

Struts2中ActionContext的request,session,application的生命周期?
利用cookie标识来查找服务器上的数据。

重启服务器,session数据会不会清空

Struts2中ActionContext的request,session,application的生命周期?
引用 10 楼 u011461314 的回复:

利用cookie标识来查找服务器上的数据。

重启服务器,session数据会不会清空

嗯嗯,,,

Struts2中ActionContext的request,session,application的生命周期?
session20分钟内有效
Struts2中ActionContext的request,session,application的生命周期?
引用 12 楼 zy353003874 的回复:

session20分钟内有效

就算重启服务器只要二十分钟内,不关浏览器就有效?

Struts2中ActionContext的request,session,application的生命周期?
是的,但是你是可以设置的
Struts2中ActionContext的request,session,application的生命周期?
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永不过期。

 


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Struts2中ActionContext的request,session,application的生命周期?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!