springmvc常用5种注解和struts2的区别

struts2和springMVC的比较(超详细)46
上亿文档资料,等你来发现
struts2和springMVC的比较(超详细)46
把这张图放在这里,我是想说SpringMVC和S;等相同的功能组件(这些由MVC模式本身决定的);为什么SpringMVC会赢得最后的胜利呢?谈几;第一、MVC框架的出现是为了将URL从HTTP的;第二、从设计实现角度来说,我觉得SpringMV;SpringMVC设计思路:将整个处理流程规范化;这个方案实际上涉及到两个方面:;l处理流程规范化――将处理流程
把这张图放在这里,我是想说SpringMVC和Struts2真的是不一样的,虽然在都有着核心分发器
等相同的功能组件(这些由MVC模式本身决定的)。
为什么SpringMVC会赢得最后的胜利呢?谈几点我自己的看法:
第一、MVC框架的出现是为了将URL从HTTP的世界中映射到JAVA世界中,这是MVC框架的核心功能。而在URL这一点SpringMVC无疑更加优雅。
第二、从设计实现角度来说,我觉得SpringMVC更加清晰。即使我们去对比Struts2的原理图和SpringMVC的类图,它依然很让人困惑,远没有SpringMVC更加直观:
SpringMVC设计思路:将整个处理流程规范化,并把每一个处理步骤分派到不同的组件中进行处理。
这个方案实际上涉及到两个方面:
l 处理流程规范化 ―― 将处理流程划分为若干个步骤(任务),并使用一条明确的逻辑主线将所有的步骤串联起来
l 处理流程组件化 ―― 将处理流程中的每一个步骤(任务)都定义为接口,并为每个接口赋予不同的实现模式
处理流程规范化是目的,对于处理过程的步骤划分和流程定义则是手段。因而处理流程规范化的首要内容就是考虑一个通用的Servlet响应程序大致应该包含的逻辑步骤: l 步骤1―― 对Http请求进行初步处理,查找与之对应的Controller处理类(方法)
――HandlerMapping
l 步骤2―― 调用相应的Controller处理类(方法)完成业务逻
――HandlerAdapter
l 步骤3―― 对Controller处理类(方法)调用时可能发生的异常进行处
――HandlerExceptionResolver
l 步骤4―― 根据Controller处理类(方法)的调用结果,进行Http响应处
――ViewResolver
正是这基于组件、接口的设计,支持了SpringMVC的另一个特性:行为的可扩展性。
第三、设计原则更加明朗。
这条重要的设计原则被写在了Spring官方的reference中SpringMVC章节的起始段: A key design principle in SpringWeb MVC and in Spring in general is the “Open for extension, closed for modification” principle.
并且重点很好地体现在SpringMVC的实现当中,可以扩展,但却不能改变。我曾经扩展过Spring的IOC、AOP功能,这一点SpringMVC应该和Spring一脉相承。
第四、组件化的设计方案和特定的设计原则让SpringMVC形散神聚。
? 神 ―― SpringMVC总是沿着一条固定的逻辑主线运行 形 ―― SpringMVC却拥有多种不同的行为模式 SpringMVC是一个基于组件的开发框架,组件的不同实现体系构成了“形”;组件的逻辑串联构成了“神”。因此,“形散神不散”: SpringMVC的逻辑主线始终不变,而行为模式却可以多种多样。
第五、更加贴合Web发展的趋势,这个更加虚了,不再展开说这个 问题了。
第六、技术上的放缓导致了程序员对Struts2失去了热情,导致SpringMVC依靠自身的努力和Spring的口碑,逐渐显露了自身的优势和特点。
为什么SpringMVC会赢得最后的胜利呢?最后,我们不妨想一想Struts2是怎样流行起来的!
我自己是从Struts1用过来的,后来Struts1的问题很明显了,开源社区出现了很多的MVC框架,最为突出的是Webwork2。
Webwork2探索了一条与传统Servlet模型不同的解决方案,逐渐被大家熟识和理解,不断发展并得到了广大程序员的认可。它以优秀的设计思想和灵活的实现,吸引了大批的Web层开发人员投入它的 怀抱。
Apache社区与Opensymphony宣布未来的Struts项目将与Webwork2项目合并,并联合推出Struts2。
Struts2能够在一个相当长的时间段内占据开发市场主导地位的重要原因在于其技术上的领先优势。而这一技术上的领先优势,突出表现为对Controller的彻底改造:
public class UserController {
private User user
public String execute() {
// 这里加入业务逻辑代码
return &success&;
从上面的代码中,我们可以看到Webwork2 /Struts2对于Controller最大的改造有两点:
? 在Controller中彻底杜绝引入HttpServletRequest或者HttpServletResponse这样
的原生Servlet对象。
? 将请求参数和响应数据都从响应方法中剥离到了Controller中的属性变量。 这两大改造被看作是框架的神来之笔。因为通过这一改造,整个Controller类彻底与Web容器解耦,可以方便地进行单元测试。而摆脱了Servlet束缚的Controller,也为整个编程模型赋予了全新的定义。从引入新的编程元素的角度来说,Webwork2 / Struts2无疑也是成功的。因为在传统Servlet模式中的禁地Controller中的属性变量被合理利用了起来作为请求处理过程中的数据部分。这样的改造不仅使得表达式引擎能够得到最大限度的发挥,同时使得整个Controller看起来更像是一个POJO。因而,这种表现形态被笔者冠以的名称 是:POJO实现模式。POJO实现模式是一种具有革命性意义的模式,因为它能够把解耦合这样一个观点发挥到极致。从面向对象的角度来看,POJO模式无疑也是所有程序员所追求的一个目标。这也就是Webwork2 /Struts2那么多年来经久不衰的一个重要原因。
所以,我们看到第一条原因是Struts2依靠技术上的革新赢得了程序员的青睐。但是,这些年来Struts2在技术革新上的作为似乎步子就迈得比较小。我们可以看到,在JDK1.5普及之后,Annotation作为一种新兴的Java语法,逐渐 被大家熟知和应用。这一点上SpringMVC紧跟了时代的潮流,直接用于请求-响应的映射。而Struts2却迟迟无法在单一配置源的问题上形成突破。 当然,这只是技术革新上的一个简单的例子,其他的例子还有很多。
至少给人的感觉是这样的。在这一点上Struts并不是很沾光,因为Spring的口碑和影响力也客观程度上加深了大家对SpirngMVC是技术领导者的印象。
三亿文库包含各类专业文献、高等教育、各类资格考试、行业资料、struts2和springMVC的比较(超详细)46等内容。 
 springMVC和struts2对比_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 springMVC和struts2对比_计算机软件及应用_IT/计算机_专业资料。...  2页 免费 Struts1和Struts2的区别... 2页 免费 struts1和struts2的详细... 2页 免费 Struts2和Struts1的区别... 3页 免费 Struts2 SpringMVC Gra... 暂...  Spring3_MVC与Struts2.x比较_计算机软件及应用_IT/计算机_专业资料。SpringMVC非常...测试环境说明: 服务器: 4G 内存,至强 3.0 (4 核超线程)CPU,windows 2003 ...  Spring MVC 和 Struts2 的区别: 1. 机制:spring mvc 的入口是 servlet,而 struts2 是 filter(这里要指出,filter 和 servlet 是不同的。以前认为 filter 是 ...  Spring MVC 和 Struts2 的比较虽然说没有系统的学习过 Spring MVC 框架, 但是工作这么长时间, 基本上在 WEB 层使用 的都是 Spring MVC, 自己觉得 Struts2 ...  文章分类: 文章分类:Java 编程 关键字: spring struts ejb 基于 Web 的 MVC framework 在 Java EE 的世界内已是空前繁荣。TTS 网站上 几乎每隔一两个星期就会...  Spring 是一个入侵式的框架 2)下面关于 IOC 的...Spring MVC 模块 D)Spring Web 模块 8)对 Struts...(C) A)init-method 是在最前面执行的 B)init-...  使用springMVC的详细步骤_计算机软件及应用_IT/计算机_专业资料。使用 springMVC ...springMVC 与 struts2 的区别: 1. 机制:spring mvc 的入口是 servlet,而 ...  比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket(二)_互联网_IT/计算机_专业资料。今日推荐 88份文档 2014年全国注册造价工程师 ...鍘熸枃鏉ユ簮锛

我要回帖

更多关于 spring mvc和struts2 的文章

 

随机推荐