因为控制器会令多个同时发生的请求共享同一个实例,所以最好不要在Action中使用实例或静态变量存储特定请求的状态信息,如果要访问相关的资源,最好进行同步操作。

解决方案 »

  1.   

    最好不要在Action中使用实例或静态变量存储特定请求的状态信息在什么地方使用?
      

  2.   

    fantasyCoder(JC★牛仔)言之有理。简单一点说,不要再Action类中使用实例变量和静态变量,那样会导致错误;不过也不要对Action中的方法进行同步处理,那样会引起性能问题。其实,Action中的方法通常只是做数据提取、包装和转发不需要什么实例变量的
      

  3.   

    Polarislee(北极星) 说的对...
    合理的设计Action只做数据提取,包装,例如ActionForm-->VO,或VO-->ActionForm
    以及转发重定向你要达到的URL...
      

  4.   

    各位所说的使用实例变量是不是指我们自己的action中的成员变量??
      

  5.   

    我觉得有点类似commander中的cmd中写代码一样
      

  6.   

    Action其实就是一个Serverlet。你可以看看struts的源代码,几乎每本代码的开头都会写道使用Action的时候要注意线程的安全性。
      

  7.   

    我没有买书,只是在网上查资料
    楼上的兄弟,麻烦你认真看看源码,action绝对不是一个servlet,action是一个单独的类,不从任何类继承
    一个ActionServlet才是从httpservlet继承。ActionServlet中有一个对action的引用。
      

  8.   

    因该市
    action 中有一个对ActionServlet的引用吧。
      

  9.   

    lj0425(冰芝麻) 
    是把Action和ActionServlet弄混了吧。
    不过从某些角度来说Action和Servlet有点类似,因为他们都只有一个实例,而且是不同步的,因此Action和Servlet都是不能有状态的