当前位置: 代码迷 >> J2EE >> SSH框架令人头痛的数据残留有关问题
  详细解决方案

SSH框架令人头痛的数据残留有关问题

热度:6   发布时间:2016-04-22 01:02:16.0
SSH框架令人头痛的数据残留问题
SSH开发,使用标准的方式,在显示和保存中都发现数据残留问题。

例1
bean:
User
private String name;
get{} set{} ......

Action:
Java code
    private String name;    private User user;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public User getUser() {        return user;    }    public void setUser(User task) {        this.user = user;    }    ......    public String getUser() throws Exception {        user=userService.findByName(name);        return "show";    }    ......

Jsp:
HTML code
        <s:if test="user!=null">            <s:property value="user.name" />         </s:if>

先在这申明,Spring注入等之类都是正常的,并没有SSH框架衔接问题。
以上代码通过name取得User。这个Action并不是页面打开时就执行的,是需要人为点击才执行。
问题是,第一个用户打开这个页面,默认是没执行getUser的,这个页面也不显示user.name,这正常,当点击执行后,这个用户能正常得到数据。可另一个用户,即使不在同一台电脑,不是同一个帐号,打开同样的页面也显示出这个user.name值了,应该说第2个人并没有执行getUser(),<s:if test="user!=null">不该通过的,感觉好像user成了全体变量了。

例2
bean相同
处理User增加操作。

Action:(不是同一个Action)
Java code
    private String name;    private User user;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public User getUser() {        return user;    }    public void setUser(User task) {        this.user = user;    }         public String UserAdd() throws Exception {              User user=new User();              user.setName=name;              userService.save(user);                  return("add")        {


JSP:
HTML code
      ......     <form method="post" action="add" id="add">           <s:textfield name="name"/>           <button  type="submit">保 存</button>     </form>     .....


同样是2个人不同电脑操作,第一个点保存时一切正常,第2个人,直接打Url:"xxxx/add",发现虽然没输入任何数据,但同样将第1个人的数据重新保存进去了。

如果第2个人也正常操作添加记录,这时发现保存了自己相同的2条记录,我跟踪了一下,发现当第2个人保存时,这个UserAdd操作了2次。


真是头大了,不知道错在哪了?




------解决方案--------------------
多半是action属性共享了。
在配置struts的action bean时加一个scope="prototype"
如:

XML code
<bean id="a" class="cn.x.x.x.xAction" scope="prototype">
  相关解决方案