`

《研磨struts2》 第一章 Struts2概述 之 Struts2基础

阅读更多

1.2    Struts2 基础

1.2.1  Struts1时代

随着时间的推移,Servlet+JSP+JavaBean模型暴露出了它的缺点:

  • 流程凌乱:Servlet在完成对用户请求的处理后,下一个页面是谁?如何跳转过去?这些都是在Servlet里面直接写代码来完成的。导致Servlet既要处理请求,还要负责页面的流程,使得Servlet功能不够单一,更要命的是很难整体把握整个系统的页面流程,因为流程被分散到各个Servlet里面了。
  • 数据传递无序:在Model2模型里面,通常情况下,数据都是使用JavaBean传来传去的,使用上比较麻烦,而且在面临复杂数据嵌套的时候使用JavaBean,常常感觉力不从心。
  • 缺乏辅助功能:几乎所有的东西都要程序员从头做起,没有统一的分发调度、验证框架、国际化、本地化、例外消息处理等等。

正当大家感觉痛苦的时候,Struts1勇敢地站出来解决这些问题。

Struts1是一个按照MVC模式开发的轻量级web应用框架,一经推出就很快风靡全球。对于那些一直在用Servlet+JSP+JavaBean的web开发者来说,Struts1可以帮助他们解决很多问题。比如:合理的代码结构划分,各种各样的实用工具框架(如验证框架、国际化框架)等等。

因此,在Struts1普及之后,大多数面试官进行面试的时候,每面必问到Struts1。那个时候Struts1真可谓一统江湖,在简历上如果没写能熟练使用Struts的话,就好像给自己判了死缓一样。

但是,随着时间的推移,Struts1的各种缺点也体现出来了,比如:

  • Action实现类必须继承Struts1中的Action,降低了灵活性。
  • 在一个应用中,只能使用一个单一的ActionServlet,可能会导致配置冲突
  • Action的API同HttpServletRequest和HttpServeletResponse是耦合的,这使得单元测试变得很困难,虽然最后推出了一个StrutsTestCase,但是使用也比较麻烦。
  • 页面传值的JavaBean必须继承Struts1中的FormBean,而其本质就是个JavaBean,使用起来照样比较麻烦。
  • 相比Struts2,Struts1没有独立的拦截器模型,使得所有类似面向切面(AOP)的操作都要写成Filter,而Filter在使用和配置上都较弱。

       当上面这些问题在Struts1上出现后,逐渐出现了一些在Struts1基础上的改进型web框架。具有代表性的有Struts2(WebWork)、Tapestry、SpringMVC等等。其中,最优秀的当然就是我们即将学习的Struts2了。

1.2.2  Struts2出世

由于前面提到的Struts1的缺点,使得它越来越无法满足开发人员灵活、多变的开发需求,同时开发效率低下也暴露无遗,很多开发人员开始选择其他更优秀的Web框架。Struts1的开发团队注意到了这个问题,他们也决定要大力改进,或是合并其他优秀的框架。

这个时候WebWork进入了Struts1开发团队的视野,WebWork设计思想先进,功能强大,但是市场占有率并不理想,因此,两个框架决定合并,就得到了现在的Struts2。事实上Struts2是在WebWork2的基础上进行开发的,Struts2.0实际就是WebWork2.3,它并没有Struts1的血统。

       Struts2既拥有WebWork优良的设计和功能,又拥有Struts1的强大品牌号召力,所以在面世之初就引起了web开发者广泛的兴趣。经过几年的普及,越来越多的新项目都采用了Struts2,而Struts1基本上就是用来维护历史项目了。作为web开发人员,Struts2几乎是一个必备的框架,其重要性不言而喻了。

 

那么Struts2到底是什么呢?

Struts2是一种基于MVC的轻量级的web应用框架。

  • 所谓框架:就是能完成一定功能的半成品软件。在没有框架的时候,所有的工作都要乖乖的从零做起;但是,有了框架,它为我们提供了一定的功能,就可以在框架的基础上做起了,大大提高开发的效率和质量。
  • web应用框架,这说明Struts2的应用范围是Web应用而不是其它地方。换句话说Struts2更注重将Web应用领域的日常工作和常见问题抽象化,为我们提供一个平台,让我们能基于这个平台快速的完成Web应用开发。
  • 轻量级:是相对于重量级而言,指的是Struts2在运行的时候,对Web服务器的资源消耗较少,比如CPU、内存等,但是运行速度相对较快。
  • 基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,同时也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

所以称Struts2为一种基于MVC的轻量级的web应用框架。

1.2.3  Struts2基本组成

WebWork与Struts合并之后,根据功能的细分和设计,拆分出一个叫xwork的部分,用来处理与Web无关的部分,也就是与Servlet无关的部分,比如:用户数据的类型转换、动作调用之前的数据验证、动作的调用等等。

其余与Web相关的部分,也就是与servlet相关的部分,被称为struts2部分。因此请注意,此处的“Struts2”可以理解为一个模块,是Struts2框架的一部分,如:如何接收用户请求的数据,如何跳转到下一个页面等等。

其中struts2部分调用了xwork部分,但是xwork部分是不依赖于Struts2部分的,xwork是完全独立的、纯Java的应用。因此,可以用下图来表示struts2部分和xwork部分的关系。

1.2.4  Struts2能干什么

在了解了Struts2是什么和基本有什么过后,一起来看看Struts2究竟可以做什么。看看Struts2到底有些什么魔法 功能,能让我们的Web开发变得更加轻松愉快呢?

  • Struts2通过简单、集中的配置来调度动作类,使得我们配置和修改都非常容易。
  • Struts2提供简单、统一的表达式语言来访问所有可供访问的数据。
  • Struts2提供内存式的数据中心,所有可供访问的数据都集中存放在内存中,所以在调用中不需要将数据传来传去,大家都去这个内存数据中心访问即可。
  • Struts2提供在动作类执行的前或后附加执行一定功能的能力,能实现AOP。
  • Struts2提供标准的、强大的验证框架和国际化框架,而且与Struts2的其他特性紧密结合。

类似这样的功能很多,不胜枚举。

       在Struts2官方文档的首页上,Struts2开发团队列出了Struts2的一些优势,一起来看看:

  • 简单的建立 - 直接拷入自带的空项目(struts-blank.war)的各种配置即可。
  • 改进的设计 - 代码不直接依赖各种HTTP(如HttpServletRequest)的API。这样可以使得单元测试简单、高效。
  • 强大的标签 - 使用标签可以有效的减少页面代码。
  • 良好的ajax支持 - 增加了有效的、灵活的ajax标签,就像普通的标准struts标签一样。
  • 简单的spring集成 - 使用spring注入Action依赖的其他bean,而不需要额外的代码。
  • 强大的结果 - 除了简单的JSP或Freemarker等标签,还支持JasperReports, JFreeChart和文件下载等,使得这些技术就像在Struts2中内置一样,而不需要其他结合代码。
  • POJO(不实现特殊接口或继承特殊父类的普通对象)的forms - 不再有struts1的ActionForm。任何JavaBean都可以用来向Action传入或传出request的参数,甚至二进制的OutputStream等也可以。
  • POJO的Actions - Action也不用实现特定的接口或继承特殊的类了。甚至可以使我们的Action不经过修改,就可以被其他框架重用。
  • 简单的插件 - 简单的放入一个jar包,任何人都可以扩展struts2框架,而不需要什么特殊的配置。Struts2不再是一个封闭的框架,任何人都可以为其添砖加瓦,我们可以通过实现Struts2的某些特殊的可扩展点,比如自定义拦截器、自定义结果类型、自定义标签等等,就可以为Struts2定制我们需要的功能,而且还可以快速的发布给别人使用,就像Eclipse的插件机制一样,超酷。
  • 明确的错误报告 - Struts2的异常简单而明了,直接指出错误的地方。
  • 简单的Action测试 - 不需要模拟HTTP对象就可以直接测试struts2的action。这使得我们的单元测试非常方便。
  • 智能的默认 - 跳过了冗余的设置。很多框架级对象都有一个默认的值,可以根本不用去关心它们,使用其默认设置就可以完成95%的日常工作。
  •  

    私塾在线网站原创《研磨struts2》系列

    转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/3988.html

    欢迎访问http://sishuok.com获取更多内容

13
0
分享到:
评论
2 楼 liguocai2009 2012-07-20  
JSP+Servlet+JavaBean和Struts1的缺陷说得台高层次了。。。看了等于没看,希望能写详细一点,最要列出一些业务场景和代码。这样再引出Struts2就更好
1 楼 gzc145 2012-04-24  
很不错啊 有时间会一直看下去!

相关推荐

    研磨Struts2配书视频对应的演示源代码

    2. **拦截器(Interceptors)**:Struts2的核心之一是其拦截器机制,它们在Action执行前后执行一系列预定义或自定义的操作。这些拦截器可以用于登录验证、日志记录、性能监控等。源代码中可能包含了不同类型的拦截器...

    研磨Struts2

    Struts2是一个开源的Web应用框架,继承了Struts1的优点,并且在此基础上进行了很多改进,使得它更加灵活和强大。Struts2采用MVC(Model-View-Controller)设计模式,将业务逻辑、数据处理与界面展示分离,便于开发和...

    研磨struts2 高清版

    由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。

    《研磨Struts 2》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于《研磨Struts 2》书籍PDF版本的下载资源。为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这...

    研磨Struts2配书视频对应的PPT

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建高效、可扩展且易于维护的Web应用的工具和组件。《研磨Struts2》这本书是专门针对Struts2框架的学习...

    研磨Struts2 高清完整版.part2

    研磨Struts2 高清完整版,请和第一部分一起下载啊

    研磨struts

    《研磨Struts2》这本书主要介绍了Struts2的基础知识、实践应用以及其核心概念。 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的业务逻辑、数据和用户界面。在Struts2中,Action类代表Controller,负责处理...

    研磨Struts2_12859679_高清完整版.part2.rar

    研磨Struts2_12859679_高清完整版

    研磨Struts2-高清-完整目录-2011年10月

    研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人

    Java工程师三大框架面试题.pdf

    Java工程师三大框架面试题.pdf

    研磨设计模式 PDF ZIP.001(三个压缩包)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式 PDF ZIP.002(三个压缩包)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    java电子读物

    3. **《程序员编程艺术第一~二十七章集锦与总结(教你如何编程)%28by_July%29定稿版》**:这本书可能是作者July的编程经验总结,包含了编程艺术的多个方面,从基础到进阶,可能涵盖良好的编程习惯、设计模式、算法...

    关于Java的三本书籍

    最后,《研磨Struct2》是针对Struts2框架的详细指南。Struts2是Java Web开发中一个流行的MVC框架,它简化了Web应用的构建过程,提高了代码的组织性和可维护性。这本书将带你深入了解Struts2的配置、拦截器、动作、...

Global site tag (gtag.js) - Google Analytics