当前位置: 代码迷 >> Java Web开发 >> 不同用户访问同一页面 相互干扰有关问题 求解
  详细解决方案

不同用户访问同一页面 相互干扰有关问题 求解

热度:642   发布时间:2016-04-16 22:07:45.0
不同用户访问同一页面 相互干扰问题 求解
比如用户 A 访问 H 页面,查询“北京”;

比如用户 B 访问 H 页面,查询“上海”;

A 刷新一下页面 , 查询结果却变成了“上海”了。

后台java代码是这样写的:

private String cityname;
cityname的getter和setter ;

public String search(){
if(cityname!=null){
按照cityname查询数据库;
}
}

我本来以为每个用户是单独的cityname变量,现在看来互相干扰是同一变量,可是我没有用static,不知道为什么。
求解决办法。
------解决方案--------------------
你用的是struts吧?了解什么是单列么?action 的全局变量,和servlet的全局属性变量是一样的线程不安全,。建议把这个变量放在方法里面用request获取。
------解决方案--------------------
还有如果是和spring 整合过后,应该了解spring 容器只初始化一次。也就是说容器里面的对象默认是单列。
------解决方案--------------------
spring文件配置的action的bean加上属性scope="session"
------解决方案--------------------
如果你是struts2整合Spring并通过spring创建Struts2的Action实例就可能出现这种情况,把实例Action bean的配置的scope添加或者修改一下,scope=“prototype”
  相关解决方案