当前位置:编程学习 > JAVA >>

关于SSH并发的问题

大家好,我是个Java新手,目前在用SSH框架来做网站,在这过程中遇到一个问题,用户访问action的时候,出现用户干扰的问题,比如说:其中有一个action(test.action),该action里有一个变量(name),并且做了get和set操作。当用户a访问test.action的时候,传入了参数name,因此触发了name的get和set函数。这个时候如果b也访问test.action也传入了参数name那么a返回name的值会变成b传入的值,这个是怎么回事呢? SSH action --------------------编程问答-------------------- 你是用同一个浏览器先是a登陆了,然后b登陆吧?那你a那个页面刷新下就是b的session了 --------------------编程问答--------------------
引用 1 楼 huxiweng 的回复:
你是用同一个浏览器先是a登陆了,然后b登陆吧?那你a那个页面刷新下就是b的session了


不是的,我是在运行过程中,不同用户,不同电脑访问的时候,把数据保存进数据库的时候,保存的内容乱了,例如说,a保存的会是b访问get和set的信息,奇怪了,是不是我设置什么的原因呢? --------------------编程问答--------------------
引用 2 楼 springe 的回复:
Quote: 引用 1 楼 huxiweng 的回复:

你是用同一个浏览器先是a登陆了,然后b登陆吧?那你a那个页面刷新下就是b的session了


不是的,我是在运行过程中,不同用户,不同电脑访问的时候,把数据保存进数据库的时候,保存的内容乱了,例如说,a保存的会是b访问get和set的信息,奇怪了,是不是我设置什么的原因呢?

不可能吧,要么你那个action是单例的 --------------------编程问答-------------------- 非常有可能是单列的! --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 3 楼 huxiweng 的回复:
Quote: 引用 2 楼 springe 的回复:

Quote: 引用 1 楼 huxiweng 的回复:

你是用同一个浏览器先是a登陆了,然后b登陆吧?那你a那个页面刷新下就是b的session了


不是的,我是在运行过程中,不同用户,不同电脑访问的时候,把数据保存进数据库的时候,保存的内容乱了,例如说,a保存的会是b访问get和set的信息,奇怪了,是不是我设置什么的原因呢?

不可能吧,要么你那个action是单例的

单例是什么意思呢?我的页面用了很多Ajax,会不会跟这个有关呢? --------------------编程问答--------------------
引用 3 楼 huxiweng 的回复:
Quote: 引用 2 楼 springe 的回复:

Quote: 引用 1 楼 huxiweng 的回复:

你是用同一个浏览器先是a登陆了,然后b登陆吧?那你a那个页面刷新下就是b的session了


不是的,我是在运行过程中,不同用户,不同电脑访问的时候,把数据保存进数据库的时候,保存的内容乱了,例如说,a保存的会是b访问get和set的信息,奇怪了,是不是我设置什么的原因呢?

不可能吧,要么你那个action是单例的

很有可能是,我这就修改一下,实在是,太感谢了 --------------------编程问答-------------------- 你的action应该是用spring进行默认方式管理的吧!spring默认方式是单例的,struts需要使用的是prototype的action,spring管理bean处加上scope="prototype" --------------------编程问答-------------------- 这是多线程安全的现象,原因是你的action是单例,所以struts会以多线程的方式使用同一个对象去处理多个不同的请求,这样,多个不同的访问抢用了同一个对象的成员变量,造成了线程安全问题,用prototype模式创建多个实例即可 --------------------编程问答-------------------- 不知道是不是 js 的“模式窗体” --------------------编程问答-------------------- 你的Action是有spring托管的,spring在创建bean的时候默认是单例模式 --------------------编程问答-------------------- 在bean  加上scope="prototype 目测是单例 --------------------编程问答-------------------- spring默认是单例模式,多例模式一般不需要,可以在对对象进行赋值前将对象所有值清空。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,