为什么spring 默认bean中scope 是单例模式每次访问是同一个Action对象,数据不安全可以的话请详细说明一下

循着那道光前行
浏览 2204回答 3
3回答

慕圣0830664

这个问题很好理解,如果struts2中的action设置成单例的话,那么访问该action中的任意方法时,都是访问同一个action(因为action中可能包含多个方法,而action只有一个),这就会导致脏数据的产生。因为struts2接收参数的方式一般是通过在action中定义成员变量或JavaBean来实现的,也就是说多次请求都会共用这些成员变量,这些成员变量可能会仍然保存着上一次请求所接受到的参数值。当你执行某些操作时,可能会使用到这些成员变量,这样一来,就会导致程序运行的结果跟预期的结果不一致。

元气满满GO

尽量不要在bean里操作成员变量

Caballarii

所以别在单例的类里写成员变量保存数据,要么像struts2就把action的scope设成prototype
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java