`
zhaoshijie
  • 浏览: 2262740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3

 
阅读更多


关键字:Java MVC框架性能比较 jsp、struts1、struts2、springmvc3

现在各种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页面。

测试结果:

测试工程

请求数

并发数

总时间(s)

总时间(s)

总时间(s)

平均值(s)

Requests Per Second(每秒处理请求数)

JSP

2000

200

5.55

3.59

4.11

4.42

452.83

struts1

2000

200

6.77

3.83

7.00

5.86

341.03

struts2 JSP

2000

200

25.20

26.30

24.11

25.20

79.35

struts2 单例Action

2000

200

28.36

27.59

27.69

27.88

71.74

struts2 多例Action

2000

200

31.31

31.97

39.56

34.28

58.34

SpringMVC3

2000

200

7.16

7.50

4.27

6.31

317.09

说明:以上测试虽不是非常的精确,但基本能说明一定的问题。每个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无疑又是项目开发的一个好的选择。唯一的问题就是,目前国内使用面还不太多,各方面的参考资料相对较少,上手的话可能要稍微难点。
分享到:
评论

相关推荐

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...

    MVC.rar_SpringMVC Struts_java MVC_mvc_spring-aspects-3.2.2_spri

    标题"MVC.rar_SpringMVC_Struts_java_MVC_mvc_spring-aspects-3.2.2_sprin"指的是一个包含多个MVC框架相关的示例项目,主要涉及SpringMVC、Struts以及Java MVC模式。这个压缩包可能是用于教学或演示如何在实际开发中...

    整合mvc和struts的jsp框架

    在Web开发领域,Java平台上的MVC(Model-View-Controller)模式被广泛采用,而Struts和Servlet MVC是两种常见的MVC实现框架。这里我们将深入探讨如何将这两种框架整合在一起,以创建一个高效的JSP应用,特别是针对...

    某著名培训机构struts2+mybatis+springMVC整合代码

    Struts2、MyBatis和SpringMVC是Java Web开发中的三大框架,它们各自负责不同的职责,协同工作能构建出高效、灵活的企业级应用。在这个名为"某著名培训机构struts2+mybatis+springMVC整合代码"的压缩包中,你将找到一...

    Struts2,JSF,SpringMVC快速入门Demo

    Struts2、JSF(JavaServer Faces)和SpringMVC都是Java Web开发中非常重要的框架,它们主要用于构建基于MVC(Model-View-Controller)架构的Web应用程序。本快速入门Demo将带你逐步了解这三个框架的基本概念、核心...

    全新mvc的升级 完全仿struts2

    Struts2是Java Web开发中一个流行的MVC框架,它是Struts1的进化版,提供了许多改进和新特性。Struts2的主要优势包括: 1. **灵活的配置**: Struts2允许开发者使用XML或注解进行配置,提供更大的灵活性。这使得...

    maven+struts2+spring+mybatis+springMVC

    本项目"maven+struts2+spring+mybatis+springMVC"就是一个典型的Java Web应用开发组合,利用了这些框架的优势进行集成,实现了数据持久化、业务逻辑处理、视图展示以及依赖管理等多个层面的功能。 首先,我们来详细...

    struts2,spring4,spring mvc,hibernate4,mybatis的三大框架(三套)

    Struts2、Spring4、Spring MVC、Hibernate4和MyBatis是Java开发中常见的四大框架,它们各自在Web应用开发中扮演着不同的角色。这里,我们将深入探讨这五大框架的核心功能、相互关系以及如何在实际项目中应用。 ...

    ssh springMvc,jquest easyUI多视图、多数据源开发框架源码

    SSH SpringMvc、jQuest 和 EasyUI 是三种在Java Web开发中广泛应用的技术,它们结合在一起可以构建出高效、灵活且功能丰富的多视图、多数据源的开发框架。下面将详细介绍这三个技术以及如何利用它们实现多视图和多...

    Struts和Spring两种MVC框架究竟有什么不同呢?

    Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...

    springmvc和strut2实现上传下载示例

    在Java Web开发中,Spring MVC和Struts2都是流行的MVC框架,用于构建高效、可维护的Web应用程序。本文将详细讲解如何利用这两个框架实现图片的上传与下载功能。 首先,我们来了解一下Spring MVC和Struts2的基础知识...

    springmvc-struts

    这些库的组合使用,可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的...

    SpringMVC精品资源--基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、.zip

    3. **Struts1**:Struts1是早期的MVC框架,它引入了Action类来处理用户请求,并通过配置文件定义Action与视图的映射。虽然现在已经逐渐被SpringMVC和Struts2取代,但理解其工作原理有助于理解MVC模式的历史发展。 4...

    Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行

    标题中的"Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行"揭示了这个项目是关于使用三个主流的Java Web开发框架——Spring、iBatis和Struts进行集成,并且结合Spring MVC实现了数据接口的...

    springMVC+struts+hibernate

    Spring MVC、Struts和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面,协同工作以构建高效的企业级应用。Spring MVC是Spring框架的一部分,主要处理HTTP请求和响应,提供模型-视图-控制...

    JAVA SpringMVC框架 介绍 代码案例

    SpringMVC框架是Java开发中的一个关键组成部分,它是Spring框架的核心模块之一,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。这个框架以轻量级、高可扩展性和灵活性著称,是现代Java Web开发的首选工具...

    Struts2+Spring+Hiberate介绍

    **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它在Struts1的基础上进行了很多改进,提供了更丰富的功能和更好的性能。Struts2的核心是Action类,它处理用户请求,并与业务逻辑层进行...

    spring mvc 框架示例

    使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...

    springmvc+struts+mybatis项目学习

    Spring MVC、Struts和MyBatis是Java Web开发中非常重要的三个框架,它们共同构建了企业级应用的基础架构。这个项目结合这三个框架,为初学者提供了一个基础的学习平台,让我们来详细了解一下它们各自的功能和相互...

    jsp + servlet + javaben实现springmvc

    1. jsp + servlet + javaben实现springmvc。代码结构清晰,可学习或者重新定制开发。 2. 项目具有详细的开发文档说明,环境配置说明,亲测可运行。 3. 系统说明 3.1 系统介绍 MVC是一种软件架构的思想, 将软件按照...

Global site tag (gtag.js) - Google Analytics