I_am_kevin
2009-10-09 06:18
浏览 227
已采纳

struts中的ActionForm和Action,哪个是单实例?

struts中的ActionForm和Action,哪个是单实例?与服务器是否重新启动有什么关系呀?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • wocsok 2009-10-11 19:36
    已采纳

    其实你了解一个框架 最先应该了解原理 Struts原理无非就是 先解析配置文件 然后在它的中央控制器中按着规定的流程执行 在流程执行的 过程中 先加载配置文件解析出来的东西 然后在用反射机制 去实例化 每次请求都会执行这套任务 好好体会下

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • easinchu 2009-10-09 16:35

    ActionForm是可以每次请求都实例化的,相当于创建一个新的实体对象。
    Struts中的Action,就不是了,它不是线程安全的,是单例模式。

    评论
    解决 无用
    打赏 举报
  • e_ville 2009-10-09 18:24

    都不是单实例的,通常如果是配置成scope="request",那么在每次请求的时候都会生成Action和Form实例;如果配置成scope="session",那么Action会每次请求都重新生成,Form在同一Session中只有一个实例。

    楼主可以通过在Form的reset方法中打印出对象来测试,
    如System.out.println(this);
    在Action的execute方法中也可以System.out.println(this);

    评论
    解决 无用
    打赏 举报
  • wanghaolovezlq 2009-10-11 08:47

    Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;

    评论
    解决 无用
    打赏 举报
  • NONE9 2009-10-11 10:38

    Struts1的Action是单例模式,非线程安全的,ActionForm是多实例,每次都会创建新的,你用Action的时候一定要注意线程安全,不要在Action类中用实例变量保存数据。。。

    评论
    解决 无用
    打赏 举报
  • wocsok 2009-10-11 19:30

    是这样的 如果不继承spring Struts里的action是单实例了 但是如果和SPRING集成的话 就可以再元素里配置成多实例的。各有各的好处,呵呵。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题