springMVC:

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

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。总之,合适的就是最好的。

springMVC 与 struts+hibernate+spring优缺点的更多相关文章

  1. 三大框架:Struts+Hibernate+Spring

    三大框架:Struts+Hibernate+Spring Java三大框架主要用来做WEN应用. Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作 ...

  2. Maven+Struts+Hibernate+Spring简单项目搭建

    这段时间学习如何使用Maven+Struts+Hibernate+Spring注解方式建立项目,在这里感谢孙宇老师.    第一次写博客,主要是方便自己查看,同时分享给大家,希望对大家有所帮助,我也是 ...

  3. 详谈Struts+Hibernate+Spring三大框架

    前言:对于JAVA WEB端的程序员来说,对JAVA三大框架:Struts+Hibernate+Spring的了解必不可缺,下面详细谈谈 Java三大框架主要用来做WEN应用. 三大框架:Struts ...

  4. Struts+Hibernate+Spring面试题合集及答案

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 ...

  5. Struts+Hibernate+Spring面试题合集及答案(转)

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring 面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 ...

  6. Struts+Hibernate+Spring实现用户登录功能

    通过登录案例实现三大框架之间的整合,登录功能是任何系统和软件必不可少的一个模块,然而通过这个模块来认识这些复杂的框架技术,理解数据流向和整个设计思路是相当容易的.只有在掌握了这些小模块的应用后,才能轻 ...

  7. ssh repo ----> struts+hibernate+spring( jar包和源码)各版本下载链接

    struts http://archive.apache.org/dist/struts/ hibernate http://hibernate.org/orm/releases/5.0/ sprin ...

  8. Struts/Hibernate/Spring源码下载

    Struts: https://olex.openlogic.com/packages/struts Hibernate: https://olex.openlogic.com/packages/hi ...

  9. Struts hibernate Spring 框架原理

    转自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html 原理:1.通过Configuration().configur ...

随机推荐

  1. maven的常用构建命令

    mvn clean:删除项目根目录中的target目录

  2. JQ对象和原生DOM对象

    相同点:两者本质上都是DOM元素. 不同点:JQ对象是在原生DOM对象上进行了一次封装,使开发人员使用起来更简洁.高效. 两者之间用法也完全不同,很说初学者经常混淆. 其实区分两者并不难, 1.语法不 ...

  3. SNMP:简单网络管理协议

    基于 TCP/IP 的网络管理包括两部分:网络管理站 (manager) 和被管理的网络单元(被管设备).这些被管设备的共同点就是都运行 TCP/IP 协议.管理进程和代理进程之间的通信有两种方式,一 ...

  4. 构建Maven项目

    Maven(一)如何用Eclipse创建一个Maven项目 Maven学习总结(三)——使用Maven构建项目 Eclipse创建一个Maven Web项目 [项目管理和构建]十分钟教程,eclips ...

  5. MySQL Bug剖析之Slave节点并行复制死锁

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 有天一早,DBA同学就找上来了,说有个DDB集群下的RDS实例Slave节点(从库)死锁了,请求支援.说实话 ...

  6. web前端_Vue框架_设置浏览器上方的标题和图标

    在创建Vue项目时一般会用默认的项目标题和图标,如下图所示: 不是很美观也可能不符合项目的需求,所以有时候就需要改变项目在浏览器上方的标签名称或者图标. 找到项目根目录的index.html,如图: ...

  7. 洛谷P1776 宝物筛选_NOI导刊2010提高(02)

    P1776 宝物筛选_NOI导刊2010提高(02) 题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了, ...

  8. 新建Podfile命令

    接下来,你需要建立一个主工程.建立成功以后,再次启动终端, 利用cd命令进入到工程文件夹内,此时需要创建一个特殊的文本文件,命令如下: 命令: touch Podfile 创建 命令: open -e ...

  9. CF1175E Minimal Segment Cover 题解

    题意:给出\(n\)个形如\([l,r]\)的线段.\(m\)次询问,每次询问区间\([x,y]\),问至少选出几条线段,使得区间\([x,y]\)的任何一个部位都被至少一条线段覆盖. 首先有一个显然 ...

  10. ZK的选举算法

    一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...