现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框架的项目访问速度,明显不如原来采用了struts1框架的项目快,带着这些疑惑,我对各类MVC框架的做了一个简单的性能分析比较,其结果应该说是基本符合预期的,可供大家参考。
测试环境:CPU:酷睿2 T5750,内存:DDR2-667 2G,Web容器:Tomcat6.0,最大线程数设置为1000,操作系统:WinXP-sp3
测试步骤:搭建6个Web工程,如下:
1.纯JSP:不包含任何MVC框架,只有一个测试用的JSP页面。
2.struts1:包含一个Action,不做任何逻辑处理,直接转发到一个JSP页面
3.struts2 JSP:不包含Action,只包含测试JSP页面,直接访问该页面。
4.struts2 单例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。
5.struts2 多例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。
6.SpringMVC3:采用Spring来管理Controller实例,包含一个Controller,不做逻辑处理,收到请求后,直接返回到一个JSP页面。
通过测试
说明:以上测试虽不是非常的精确,但基本能说明一定的问题。每个JSP页面和Action都不包含任何的业务逻辑代码,只是请求转发。每轮测试取三次总时间的平均值。所有工程的测试均全部完成并正常处理请求,没有请求拒绝情况发生。
结论:
1.纯JSP的性能应该最高,这不难理解,JSP被编译成Servlet后,没有任何多余的功能,收到请求后直接处理。(这也验证一句经典的话:越原始效率就越高。)
2.struts1的性能是仅次于纯JSP的,由于struts1采用单例Action模式,且本身的封装相比struts2应该说简单很多,虽然开发效率不如struts2,但已经过多年的实践考验,性能稳定高效。
3.相比来说struts2的性能就比较差了,这不难理解,struts2之所以开发方便,是由于采用值栈、OGNL表达式、拦截器等技术对请求参数的映射和返回结果进行了处理,另外还采用大量的标签库等,这些都无疑增加了处理的时间。因此降低了效率。在我们实际的项目中,我测试本地工程访问每秒处理请求数只能达到35左右,应该说还有不少可优化的空间。
4.很多人认为struts2性能差是因为它的多例Action模式导致的,但我们采用spring管理struts2的Action,并设置按单例方式生成Action实例后,发现其性能有所提高,但并不是很明显。由此可见,多例Action模式并不是struts2性能瓶颈所在。另外,我们在 struts2中采用JSP方式访问,发现其性能依旧和没有采用任何MVC框架的纯JSP之间存在好几倍的差距,这又从另一个侧面证实了我们刚才得出结论,struts2性能的瓶颈不在于它的多例Action模式。
5.SpringMVC3的性能略逊于struts1,但基本是同级别的,这让人眼前一亮,springMVC有着不比struts2差的开发效率和解耦度,但性能却是struts2的好几倍,这让我们灰常振奋,SpringMVC无疑又是项目开发的一个好的选择。唯一的问题就是,目前国内使用面还不太多,各方面的参考资料相对较少,上手的话可能要稍微难点。
分享到:
相关推荐
Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...
标题"MVC.rar_SpringMVC_Struts_java_MVC_mvc_spring-aspects-3.2.2_sprin"指的是一个包含多个MVC框架相关的示例项目,主要涉及SpringMVC、Struts以及Java MVC模式。这个压缩包可能是用于教学或演示如何在实际开发中...
在Web开发领域,Java平台上的MVC(Model-View-Controller)模式被广泛采用,而Struts和Servlet MVC是两种常见的MVC实现框架。这里我们将深入探讨如何将这两种框架整合在一起,以创建一个高效的JSP应用,特别是针对...
Struts2、MyBatis和SpringMVC是Java Web开发中的三大框架,它们各自负责不同的职责,协同工作能构建出高效、灵活的企业级应用。在这个名为"某著名培训机构struts2+mybatis+springMVC整合代码"的压缩包中,你将找到一...
Struts2、JSF(JavaServer Faces)和SpringMVC都是Java Web开发中非常重要的框架,它们主要用于构建基于MVC(Model-View-Controller)架构的Web应用程序。本快速入门Demo将带你逐步了解这三个框架的基本概念、核心...
Struts2是Java Web开发中一个流行的MVC框架,它是Struts1的进化版,提供了许多改进和新特性。Struts2的主要优势包括: 1. **灵活的配置**: Struts2允许开发者使用XML或注解进行配置,提供更大的灵活性。这使得...
本项目"maven+struts2+spring+mybatis+springMVC"就是一个典型的Java Web应用开发组合,利用了这些框架的优势进行集成,实现了数据持久化、业务逻辑处理、视图展示以及依赖管理等多个层面的功能。 首先,我们来详细...
Struts2、Spring4、Spring MVC、Hibernate4和MyBatis是Java开发中常见的四大框架,它们各自在Web应用开发中扮演着不同的角色。这里,我们将深入探讨这五大框架的核心功能、相互关系以及如何在实际项目中应用。 ...
SSH SpringMvc、jQuest 和 EasyUI 是三种在Java Web开发中广泛应用的技术,它们结合在一起可以构建出高效、灵活且功能丰富的多视图、多数据源的开发框架。下面将详细介绍这三个技术以及如何利用它们实现多视图和多...
Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...
在Java Web开发中,Spring MVC和Struts2都是流行的MVC框架,用于构建高效、可维护的Web应用程序。本文将详细讲解如何利用这两个框架实现图片的上传与下载功能。 首先,我们来了解一下Spring MVC和Struts2的基础知识...
这些库的组合使用,可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的...
3. **Struts1**:Struts1是早期的MVC框架,它引入了Action类来处理用户请求,并通过配置文件定义Action与视图的映射。虽然现在已经逐渐被SpringMVC和Struts2取代,但理解其工作原理有助于理解MVC模式的历史发展。 4...
标题中的"Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行"揭示了这个项目是关于使用三个主流的Java Web开发框架——Spring、iBatis和Struts进行集成,并且结合Spring MVC实现了数据接口的...
Spring MVC、Struts和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面,协同工作以构建高效的企业级应用。Spring MVC是Spring框架的一部分,主要处理HTTP请求和响应,提供模型-视图-控制...
SpringMVC框架是Java开发中的一个关键组成部分,它是Spring框架的核心模块之一,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。这个框架以轻量级、高可扩展性和灵活性著称,是现代Java Web开发的首选工具...
**Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它在Struts1的基础上进行了很多改进,提供了更丰富的功能和更好的性能。Struts2的核心是Action类,它处理用户请求,并与业务逻辑层进行...
使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...
Spring MVC、Struts和MyBatis是Java Web开发中非常重要的三个框架,它们共同构建了企业级应用的基础架构。这个项目结合这三个框架,为初学者提供了一个基础的学习平台,让我们来详细了解一下它们各自的功能和相互...
1. jsp + servlet + javaben实现springmvc。代码结构清晰,可学习或者重新定制开发。 2. 项目具有详细的开发文档说明,环境配置说明,亲测可运行。 3. 系统说明 3.1 系统介绍 MVC是一种软件架构的思想, 将软件按照...