`

springMVC 与 struts+hibernate+spring优缺点

阅读更多

springMVC:

 Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以你可以自主的选择视图。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

struts+spring+hiberante:

 
SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。 其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供 支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最 后由Spring做管理,管理struts和hibernate。

优缺点总结:

1,基于注解,stuts2虽然也有注解但是比较慢,没人用更多的时候是用xml的形式
2,能与spring其它技术整合比如说webflow等,
3,获取request及session对象比较简单,直接当参数值传入就行了,而struts2还需要通过ServletActionContext 对象获取
4,验证也比较简单,通过jsr-303就能实现,而不必写其它的代码,而struts2是通过写 actionName-validation.xml实现的
在说struts2的优点:
1,不必关注客户端是get提交还是set提交,springMvc的地址映射注解method是必须要被关注的
2,自动封装对象,springMvc,是封装在model里的只能在,所以会看到input框的数字类型有0或是0.0的选项
3,自定义结果类型,如xml什么的而springmvc确只能返回modelandView,或是不返回
4,将视图与结果解耦,因为struts2返回的是字符串,只有通过struts.xml才知道具体的是哪一个jsp,或是html,而springMvc只能明确的返回modelAndview
5,struts2 不需要专门的中文过滤器,而springMvc3需要配置
针对标签来说它们大同小异,但是当需要自动装配时 springMnc的form表单是必须使用的,而struts2则不用,其它功能上差不多,但效率上,springMvc的标签比struts2快因 为,struts2通过request建立了堆和栈,所以效率上有所下降,我推荐还是用jsp自带标签不仅易于扩展而且,效率也不错
再说应用场景:如果都是成功之后跳一个页面的那两者都可以,而如果是其它的类型,那么struts2是一个不错的选择,举个例子来说 Extjs4.0 增加对象自动装配struts2能实现,但springMvc就不行,除非你喜欢大量的request.getParamter()

 

6,性能:

 

spring会稍微比struts快。 spring mvc是基于方法的设计 而sturts是基于类 , 每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据 一样。spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3mvc中,一个方法对应一 个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用settergetter方法把 request中的数据注入; struts2实际上是通过setter getter方法与request打交道的 ,而 springmvc 不用 setter getter 方法 ;struts2中,一个Action对象对应一个request上下文。

 

实现restful:

 

springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上 spring3 mvc就容易实现restful url struts2 是类级别的拦截,一个类对应一个 request 上下文;实现 restfulurl 要费劲,因为 struts2 action 的一个方法可以对应一个 url ;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。

 

数据共享:

 

struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。

 

spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量

小结:

 

 其实用什么技术,这一点真的没有硬性的要求,有人觉得struts好用,有人就觉得springMVC先进。总的来说,实现的功能都是大体一致的。有时候 架构师一直使用struts,为了项目的稳定,就一直沿用;而一些先进分子总是喜欢在项目中常识新的技术,也促进了这项技术的发展。单就struts和 springMVC来说,都是controller层的框架,作用都是接收request请求,中间调用业务逻辑代码,最后返回reponse响应,不用 刻意远离SSH,也不用一味追求Spring MVC。总之,合适的就是最好的。

 

其它后续补充。。。。。。。

  • 大小: 12.3 KB
  • 大小: 42.1 KB
分享到:
评论

相关推荐

    maven(springmvc+spring+hibernate)

    SSH整合指的是Spring、Struts和Hibernate这三大Java开源框架的集成应用。这三大框架分别负责控制层、视图层和持久层,它们的结合能够构建出功能强大的企业级Web应用程序。 Spring框架是整个SSH整合的核心,它提供了...

    springMVC+struts+hibernate

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

    struts2+spring4+springMVC+hibernate4+mybatis的三大框架(三套)

    史上最全最基础的java框架(s2sh,ssm,springspringmvcm三套),spring+springMVC+mybatis可直接切换oracle、mysql、sqlserver数据库。另外框架同上配置即可。

    SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip

    SSH是Java开发中的一种经典架构组合,代表Spring、Struts和Hibernate这三个开源框架的结合。在本项目"SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip"中,开发者使用了SpringMVC4作为表现层,Spring4...

    spring+springmvc+hibernate+thymeleaf 练习demo项目源码

    本项目"spring+springmvc+hibernate+thymeleaf 练习demo"是一个整合了这四个框架的实践示例,旨在帮助学习者理解它们如何协同工作。下面我们将深入探讨这些技术及其在项目中的应用。 1. Spring框架: - **依赖注入...

    SpringMVC+Spring+Hibernate(SSH)框架搭建之二

    本教程将深入探讨如何构建一个基于SpringMVC、Spring和Hibernate的完整应用程序,这是SSH框架搭建的第二步,重点在于搭建Hibernate部分并进行测试。 首先,Hibernate是一个对象关系映射(ORM)框架,它简化了Java...

    spring+struts2+hibernate+mybatis

    一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去

    spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 案例.rar

    spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    spring+springMVC+mybatis+struts2+jdbc+hibernate(全面集成,如果工作框架中请勿这种集成)

    spring+springMVC+mybatis+struts2+jdbc+hibernate 全面集成 此框架本人花费2天时间完成 工作中请勿配置如此多元化框架 框架的意义是为了让代码风格统一 此框架是为了学习 作为参考 jdbc.properties为数据库链接参数...

    springmvc+spring+hibernate+mysql+maven

    标题 "springmvc+spring+hibernate+mysql+maven" 描述的是一个经典的Java Web开发技术栈,通常称为SSH(Spring、Struts、Hibernate)框架的现代化变体,因为Struts已被Spring MVC取代。SSH是一个流行的企业级应用...

    SpringMVC+hibernate3+spring3的jar包.zip

    Spring MVC、Hibernate 3 和 Spring 3 是Java开发中非常重要的三个开源框架,它们共同构建了一个强大的企业级应用开发解决方案,通常被称为SSH(Spring、Struts、Hibernate)框架的组合,尽管这里的Struts并未直接...

    ext3+struts2+hibernate+spring的CRUD+分页

    在本例中,Spring主要负责服务层的管理,它可以帮助我们更好地组织业务逻辑,并与其他组件(如Struts2和Hibernate)进行整合。Spring还提供了事务管理,确保数据操作的一致性和完整性。 在分页功能上,EXT3的Grid ...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    其中,Struts2、Spring与Hibernate作为经典的“SSH”组合(Struts-Spring-Hibernate),在Java Web开发领域占据着重要的地位。本文旨在通过一个简单的登录示例项目,详细介绍如何在Netbeans IDE环境下构建基于Struts...

    Maven_SpringMVC+Hibernate+Spring

    【标题】"Maven_SpringMVC+Hibernate+Spring"是一个综合性的项目,它展示了如何使用Maven构建一个基于SpringMVC、Hibernate和Spring框架的Web应用。这个项目旨在为开发者提供一个完整的、功能齐全的样例,演示了这三...

    毕业设计,基于SpringMVC+Hibernate+MySql开发的实验室预约管理系统,内含Java完整源代码

    用了技术框架: HTML+CSS+JavaScript+java+jsp+SpringMVC+Spring+Hibernate+Struts2 管理员账号/密码:admin/admin 教师账号/密码: teacher/123456 学生账号/密码: student/123456 运行环境:jdk1.8/jdk1.9 IDE...

    新SSH(Spring+SpringMVC+Hibernate)框架结构的java web案例实践

    随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境...

    基于Struts+Hibernate+Spring的CRM客户管理系统源码.zip

    标签中的“java”表明主要编程语言是Java,“ssm”和“ssh”则分别代表了Spring+SpringMVC+MyBatis和Spring+Struts+Hibernate这两个常用的Java Web开发框架。 现在,让我们深入探讨这些技术: 1. **Struts**:这是...

    基于Spring+Struts2+Hibernate 的商城系统

    该电子商城系统功能包括顾客的购物车、订单管理和留言板,支持商品搜索;后台管理员的商品、订单、会员、系统管理等。 ...系统采用技术:Spring+Struts2+Hibernate+mysql+jQuery+Ajax+面向接口编程

Global site tag (gtag.js) - Google Analytics