Struts 单例的一点疑惑 Struts1.X是单例的,那么模拟一个业务场景是:向数据库记录一个登陆用户的信息,需要用到From缓存,多个浏览器同时访问Action的保存用户信息的方法,因为是单例的,所以共用一个Form,会不会造成数据覆盖?如果会覆盖,即使单例有一定的好处,但安全上存在这么大的问题,为什么还要使用这种实现方式或者有其什么对应措施? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Struts1.X是单例的,但是表单的值是通过参数从ActionForm传入的,如下面的form,每个请求的产生的form是不同的,怎么可能相互覆盖呢?execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) 主要是注意在Struts1的ACTION中不要使用成员变量,如果这样此成员变量会被多个线程共享,有线程安全问题。STRUTS2的ACTION已经不再是单例的,所以表单的值是通过ACTION的成员变量来传递的,这是STRUTS1和STRUTS2的主要区别之一。 谢谢您的回答,而且答案也表示十分同意,不过有两点我比较模糊,就是:1、Http向ActionServlet发送一个请求,ActionServlet会根据Action标签中是否配置了form属性,如果有则在当前会话中查看是否已经有该From的实例,如果没有则new一个返回,如果有则直接拿来用。如果该Action的会话范围设置为Session,那这个Form不是同一个吗,这样是不是就有覆盖现象了?2、在excute方法中定义一个int的局部变量,并在代码中多次用到,并发访问下,这个int的变量不会相互覆盖吗? 1 这个会话 应该是request 。2 方法是Thread 独享的,也就意味着线程调用方法时的局部变量(不是全局变量)也是唯一的。 tomcat部署xfire生成webservice报错,linux cpu占用率升高 如何更好的学习Extjs 在myeclipse7.0上部署openkm代码出现问题 jsp有些中文变问号 包名显示问题 java mail 怎么接收163信箱中的邮件 用hibernate 的 pojo 作为 struts的actionform是否可行? 我想在JBuilder中使用hibernate可以吗 请教各位关于tomcat服务器的问题 jboss下部署servlet的问题,请大家指教! 图片填充DIV mysql 远程批量插入速度很慢,求解
ServletRequest request, ServletResponse response) 主要是注意在Struts1的ACTION中不要使用成员变量,如果这样此成员变量会被多个线程共享,有线程安全问题。STRUTS2的ACTION已经不再是单例的,所以表单的值是通过ACTION的成员变量来传递的,这是STRUTS1和STRUTS2的主要区别之一。
1、Http向ActionServlet发送一个请求,ActionServlet会根据Action标签中是否配置了form属性,如果有则在当前会话中查看是否已经有该From的实例,如果没有则new一个返回,如果有则直接拿来用。如果该Action的会话范围设置为Session,那这个Form不是同一个吗,这样是不是就有覆盖现象了?
2、在excute方法中定义一个int的局部变量,并在代码中多次用到,并发访问下,这个int的变量不会相互覆盖吗?
2 方法是Thread 独享的,也就意味着线程调用方法时的局部变量(不是全局变量)也是唯一的。