Struts2的Action是单例还是多例?
Spring的controller默认是单例还是多例?
1、默认单例
SpringMVC默认是单例的。与Struts2不同,SpringMVC没有默认处理方法,也就是说SpringMVC是基于方法的开发,都是用形参接收值,一个方法结束参数就销毁了,多线程访问都会有一块内存空间产生,里面的参数也是不会共用的。由于SpringMVC默认使用了单例,所以Controller类中不适合定义属性,只要controller中不定义属性,那么单例完全是安全的。单例模式可以提高SpringMVC性能,不需要每次相应请求都创建一个对象。
此外,Spring的Ioc容器管理的bean默认是单实例的。
2、多例
在特殊情况,需要在Controller类定义属性时,单例肯定会出现竞争访问,需要在类上面加上注解@Scope(“prototype”)改为多例的模式。
3、Struts2
与SpringMVC不同,Struts2是基于类的属性进行发的,定义属性可以整个类通用。所以Struts2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象。Action类中往往包含了数据属性,例如在页面填写的form表单的字段,Action中有对应的的属性来绑定页面form表单字段。显然如果Action是单实例的话,那么多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了。
但是什么有人说Struts2的Action 默认是单例的?而且还可以进行配置呢?
因为在和Spring一起使用的时候,Action交给Spring进行管理,默认的就是单例,所以才会有人说Struts2默认是单例的。
所以在Spring整合Struts2开发时,如果需要用使用Struts2多例,就在spring的action bean配置的时候设置scope=”prototype”。
---------------------
作者:程裕强
来源:CSDN
原文:https://blog.csdn.net/chengyuqiang/article/details/78776767
版权声明:本文为博主原创文章,转载请附上博文链接!
相关推荐
Struts1的核心概念包括Action、FormBean、ActionServlet和配置文件(struts-config.xml),它通过配置文件来定义请求与Action的映射,以及Action如何与视图交互。Struts2是其升级版,设计更灵活,支持更多的插件和...
本项目"maven+struts2+spring+mybatis+springMVC"就是一个典型的Java Web应用开发组合,利用了这些框架的优势进行集成,实现了数据持久化、业务逻辑处理、视图展示以及依赖管理等多个层面的功能。 首先,我们来详细...
整合Struts2与MyBatis或Hibernate时,Struts2的动作类(Action)接收请求并调用Service层,Service层再通过MyBatis或Hibernate操作数据库。 整合步骤通常包括以下部分: - 配置POM.xml文件:添加所需框架的依赖。 -...
SpringMVC的控制器默认是单例模式,因此在多线程环境下可能存在线程安全问题。为避免这个问题,控制器不应包含可变状态,即避免在控制器中定义实例变量。如果必须存储数据,可以使用Session或者ThreadLocal,但需...
Struts2、JSF(JavaServer Faces)和SpringMVC都是Java Web开发中非常重要的框架,它们主要用于构建基于MVC(Model-View-Controller)架构的Web应用程序。本快速入门Demo将带你逐步了解这三个框架的基本概念、核心...
在本文中,我们将详细讨论框架面试题,涵盖了String、struts2和springmvc等多个方面的知识点。 首先,让我们从IOC容器开始。IOC容器是具有依赖注入功能的容器,是可以创建对象的容器。IOC容器负责实例化、定位、...
3. **测试**:Spring MVC更容易进行单元测试,因为Controller通常是无状态的,而Struts2的Action有状态,测试相对复杂。 4. **社区支持**:虽然两者都有活跃的社区,但Spring MVC由于Spring框架的广泛使用,社区支持...
Struts2的设计默认为多例模式。 - **数据管理**: Struts2使用值栈存储请求和响应的数据;SpringMVC则通过模型数据来管理数据。 综上所述,无论是Struts2还是SpringMVC,它们都是基于MVC设计模式的优秀框架,各有...
Controller/Action处理业务逻辑,并通过MyBatis查询或更新数据库。处理完成后,将结果封装成ModelAndView或Result,然后返回给视图层进行渲染。视图通常是一个JSP或Freemarker模板,通过OGNL或EL表达式来展示数据。 ...
Struts2、MyBatis和SpringMVC是Java Web开发中的三大框架,它们各自负责不同的职责,协同工作能构建出高效、灵活的企业级应用。在这个名为"某著名培训机构struts2+mybatis+springMVC整合代码"的压缩包中,你将找到一...
- **实例化方式**:SpringMVC 默认使用单例模式(可配置为多例),而 Struts2 只能使用多例模式。 - **性能对比**:由于 SpringMVC 的单例模式和更轻量的设计,理论上其性能优于 Struts2。 #### SpringMVC 执行流程...
Spring MVC、Struts和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面,协同工作以构建高效的企业级应用。Spring MVC是Spring框架的一部分,主要处理HTTP请求和响应,提供模型-视图-控制...
- **MVC框架**:Struts2属于MVC(Model-View-Controller)框架,这类框架主要包括Struts、WebWork、SpringMVC等。 - **事件驱动框架**:如JSF(JavaServer Faces)、Tapestry等。 - **Struts2的历史背景**: - *...
1. **实例管理**:Struts1中Action是单例模式,而Struts2采用多实例模式,提高了线程安全性和性能。 2. **Servlet API依赖**:Struts1的Action类与Servlet API紧密耦合,限制了其灵活性和可测试性;相比之下,Struts...
在这个“springMVC 简单操作,并且配置action”的项目中,我们将探讨如何不依赖Struts或Hibernate等其他框架,仅使用Spring MVC来实现网站的基本功能。 首先,我们从配置开始。在Spring MVC中,`web.xml`是应用的...
Struts2和Hibernate是两种非常流行的Java Web开发框架,它们分别负责MVC(Model-View-Controller)架构中的控制层和持久层。本教程通过一个简单的Demo,展示了如何将这两个框架整合,实现基本的CRUD(创建、读取、...
该jar包可以根据数据库表,自动生成action(struts2)/controller(springmvc)、model、service、dao各个层的代码。 实用框架:struts2/springmvc + mybatis + spring 可根据项目需要选择: 框架类型...
Struts2是其最新版本,采用Model-View-Controller设计模式,提供了一套完整的解决方案,包括Action、Interceptor、Result等概念,使得开发者可以更方便地处理请求和响应。 4. Hibernate:Hibernate是一个对象关系...