比如用户 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”