struts中的ActionForm和Action,哪个是单实例?与服务器是否重新启动有什么关系呀?
其实你了解一个框架 最先应该了解原理 Struts原理无非就是 先解析配置文件 然后在它的中央控制器中按着规定的流程执行 在流程执行的 过程中 先加载配置文件解析出来的东西 然后在用反射机制 去实例化 每次请求都会执行这套任务 好好体会下
ActionForm是可以每次请求都实例化的,相当于创建一个新的实体对象。
Struts中的Action,就不是了,它不是线程安全的,是单例模式。
都不是单实例的,通常如果是配置成scope="request",那么在每次请求的时候都会生成Action和Form实例;如果配置成scope="session",那么Action会每次请求都重新生成,Form在同一Session中只有一个实例。
楼主可以通过在Form的reset方法中打印出对象来测试,
如System.out.println(this);
在Action的execute方法中也可以System.out.println(this);
Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;
Struts1的Action是单例模式,非线程安全的,ActionForm是多实例,每次都会创建新的,你用Action的时候一定要注意线程安全,不要在Action类中用实例变量保存数据。。。
是这样的 如果不继承spring Struts里的action是单实例了 但是如果和SPRING集成的话 就可以再元素里配置成多实例的。各有各的好处,呵呵。