spring管理Struts2的action时应配置scope="prototype"

本文探讨了Struts2框架中使用Spring管理Action的作用域问题。解释了单例模式下可能引发的数据安全问题,并对比了prototype和session作用域的特点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring 默认情况下scope 是单例模式,即scope="singleton",这样只会创建一个Action对象,即每次访问都是同一个Action对象,数据不安全。而struts2 是要求 每次访问 都要求对应不同的Action, scope="prototype" 就可以保证这个要求, 当有请求的时候 都创建一个Action对象。


<span style="font-weight: normal;"><span style="font-size:14px;"><!-- 配置action -->
<bean id="testAction" class="com.lmk.test.TestAction"  scope="prototype">
	<!-- action注入  <property name="t" ref="t" />-->
</bean></span></span>




再讲得通俗一点就是如果采用单例模式,那么Struts2从前台得到的数据,经过处理结束后,再次进入该页面时,前一次提交的数据还是会被保留下来。
例如:
查询系统中的用户:当用户名a查询第一次请求结束后,再进入查询页面时,系统会保留前一次的查询条件。


当然,也可以设置scope="session",也能避免web中action的并发问题,只为当前用户创建一次bean,直至
session消失。在这种情况下,对当前用户而言,bean是有状态的。好处就是少创建bean的实例,有那么一
点点性能的提升
应用场景:
    1. 多数情况下应使用prototype
    2. 若用户不多,且频繁操作(频繁使用action),硬件一般,可以考虑session,兴许还能提升一点点性能。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值