使用单例模式,ssh框架,多用户提交保存数据,同时进入action,值栈的值被覆盖保存了最后一次提交的数据
2个回答
展开全部
如果你说的是struts1的话,本身struts1的控制器action就是单例模式,每个action只有一个实例,
同时处理多用户请求,因此存在线程安全问题。
但是如果不在action层定义记忆性质的变量,即要求不同用户对应不同值的成员变量,就不会存在线程安全问题,如action层里面定义service单例就可以,而用户提交的数据,则是使用actionform以参数形式传入action层处理,因此不存在线程安全问题。
建议把需要保存的数据,使用actionform传入就可以了,而不是定义在action层,这是不被允许的,不符合struts1的设计初衷。
同时处理多用户请求,因此存在线程安全问题。
但是如果不在action层定义记忆性质的变量,即要求不同用户对应不同值的成员变量,就不会存在线程安全问题,如action层里面定义service单例就可以,而用户提交的数据,则是使用actionform以参数形式传入action层处理,因此不存在线程安全问题。
建议把需要保存的数据,使用actionform传入就可以了,而不是定义在action层,这是不被允许的,不符合struts1的设计初衷。
更多追问追答
追问
谢谢 struts2呢
追答
struts2当然就可以了,它的action层就是prototype模式也就是相对于单例模式的初始化模式,应对每个客户请求初始化一个action,然后将需要保存的数据变量,作为action层的成员变量就可以了,这也就是struts2中常用的属性驱动,这样就不会出现线程安全问题了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询