`
- 浏览:
438240 次
- 性别:
- 来自:
北京
-
struts1 中actioin 是单例,即所有session对应一个action
由spring来创建action时,默认处理,为单例(既然是单例,即使你设置成了多例,也不影响程序功能)
struts2 中action 是多例,即一个session产生一个action。
由spring来创建action时,须设置为prototype的,不能是singleton。
个人感觉,之所以struts2中action必须是多例的,主要原因在与请求数据和返回数据,大多都封装到了action中,用于实例变量,这样以来,如果将action设置成单例模式,则多个县城访问的时候,就会共享这些数据,从而引起数据混乱或者线程安全问题!
线程模式:
" Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
" Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Action执行的控制:
" Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
" Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面存在显著的区别。 首先,Action类的设计有所不同。在Struts1中,Action类需要继承一个抽象基类,这限制了Action...
Struts1和Struts2是两个非常著名的Java Web框架,它们在处理MVC(Model-View-Controller)架构方面有着显著的区别。以下是关于这两个框架在关键特性上的对比: 1. **Action类**: - **Struts1**:要求Action类继承...
### Struts1与Struts2本质区别 #### 1. 在Action实现类方面的对比 - **Struts 1**:要求Action类必须继承一个抽象基类`Action`,这种设计方式意味着开发者必须按照预设的结构来编写代码,灵活性较低。这种通过抽象...
### Struts1与Struts2的本质区别 #### 一、Action实现类的对比 - **Struts1**:要求Action类必须继承一个抽象基类,这意味着开发者必须遵守框架提供的特定结构,这在一定程度上限制了灵活性。此外,由于依赖于抽象...
### Struts2与Struts1的对比 #### 一、Action类 在Struts框架的两个版本中,Action类的设计存在显著差异。 - **Struts1**:在Struts1中,Action类需要继承自一个特定的基础类。这意味着所有的Action类都需要实现...
Struts1和Struts2在设计理念上有明显的不同,Struts2在架构上更加现代化,采用了更多的设计模式和最佳实践,提高了应用的可维护性和扩展性。虽然两者都属于MVC框架,但在实现细节上存在诸多差异。对于新的开发项目而...
- **请求处理**:Struts1中,每个Action实例是单例的,这意味着多个用户可能共享同一个Action实例,这在并发环境下可能会引发问题。 - **验证机制**:Struts1提供了内置的验证框架,但其使用相对复杂,且定制性较差...
以上几点对比清晰地展现了Struts1和Struts2在设计哲学和技术实现上的不同之处。Struts2在多个方面进行了改进和优化,旨在提高开发效率、增强代码可读性和可维护性。对于现代Web应用而言,Struts2提供了更为先进的...
以下是对Struts2核心概念、优缺点以及与Struts1对比的详细讲解。 **Struts2概述** Struts2是基于Webwork框架发展而来的,它是一个用于构建企业级Java Web应用的全面解决方案。Struts2的设计目标是提供一套流线型的...
- Struts1使用单例模式,因此Action类需要确保线程安全。 - Struts2为每个HTTP请求创建一个新的Action实例,这减少了线程安全问题的复杂度。 3. **Servlet依赖性对比**: - Struts1完全依赖于Servlet API。 - ...
1. **实例管理**:Struts1中Action是单例模式,而Struts2采用多实例模式,提高了线程安全性和性能。 2. **Servlet API依赖**:Struts1的Action类与Servlet API紧密耦合,限制了其灵活性和可测试性;相比之下,Struts...
#### 五、Struts2与Struts1的对比 - **Action实现类**:Struts1的Action必须继承自`org.apache.struts.action.Action`类,而Struts2的Action则可以通过实现`org.apache.struts2.dispatcher.Dispatcher`接口来定义,...
2. 线程模式方面的对比:Struts1 Action 是单例模式,并且必须是线程安全的,而 Struts2 Action 对象为每一个请求产生一个实例,因此没有线程安全问题。 3. Servlet 依赖方面的对比:Struts1 Action 依赖于 Servlet ...
相较于其前身Struts1.2,Struts2在多个方面进行了改进和优化,提高了开发效率和代码的可测试性。以下是Struts2与Struts1.2在关键点上的对比和Struts2的执行流程概述: 1. **Action类的设计**: - 在Struts1中,...
### 特性对比:Struts1.2与Struts2 #### Action类的设计哲学 - **Struts1.2**:要求Action类继承自抽象基类`Action`,这种设计方式限制了代码的灵活性,迫使开发者面向抽象类编程而非接口。这一策略在实际应用中...