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

Struts2 in action 之 Struts2高层概览

    博客分类:
  • j2ee
阅读更多

Struts 2从3000英尺俯览:MVC模式
Struts 2的高层设计遵循被实践证实的Model-View-Controller设计模式(MVC模式)。在本节中,我们将告诉你框架的哪些部分反映了MVC模式的各个关注点。MVC模式为应用到web应用中的各个关注点(concerns)提供了良好的分离。关注点的分离允许我们通过将大型软件分解为高层组件来管理它们的复杂性。MVC设计模式中有三个不同的关注点(concerns):模型、视图和控制器。在Struts 2中,这些被依次实现为action、result和FilterDispatcher。图1.3 展示了Struts2实现MVC模式来处理web应用的工作流。让我们仔细的看看图1.3.我们队MVC模式的各个关注点提供了简要的描述,然后看看对应的Struts 2组件如何来完成这些责任。


控制器 ---- FilterDispatcher
我们将从控制器开始。当我们在讨论web应用时,从这里开始谈起看上去更有意义。实际上在Struts中大量使用的MVC模式经常被称为前端控制器(front controller)MVC。这意味着该控制器在应用的前端,也是执行处理的第一个组件。这个在图1.3中可以很容易的看到。控制器的工作是将请求映射到Action上。在web应用中,进入的HTTP请求可以被认为是用户给应用下达的命令。web应用的一个基础的任务则是将这些请求路由到应用本身的一组合适的action上。控制器的职责就像是交通灯或空中交通控制器。在某些情况下,这些工作是管理方面的,当然不会是你的核心逻辑的一部分。



在Struts 2中,控制器的角色是由FilterDispatcher来实现的。该Filter的的重要作用是检测进入的每个请求然后确定哪个Struts2的action可以来处理该请求。在这里,框架为你实现所有的控制器操作。你仅仅需要通知框架哪个请求的URL映射到你的哪个action即可。这里你可以通过基于XML的配置文件或Java注解来实现。在下一章我们将为你演示这两种方式。

注意:
注意Struts2中对于web应用的零配置做了很大的努力。零配置的目标是对于应用的所有元数据,像给定的URL映射到哪个action,使用约定而不是配置。Java注解的使用在零配置模式下起来重要的作用。因为零配置没有完全的实现,当前可以使用注解和约定来减少基于XML的配置。
在第二章中的HelloWorld应用中,我们将演示Struts 2web应用的常规架构和部署细节。

模型—action
看下图1.3,很容易看出模型被反映为Struts2中的action组件。但是确切来说,模型是什么?我发现模型在MVC中是最模糊的。在某些方式下,模型是包含在应用层次中的黑盒子。其他的东西仅仅是用户接口和粘合类。模型是事物的本身。在更加技术化的词汇中,模型是应用的内部状态。状态由数据模型和业务逻辑共同组成。从高层黑盒子视图来看,数据和业务逻辑混合到一起作为应用的状态。例如,如果你登录到一个应用中,业务逻辑和来自于数据库的数据都将参与到授权的处理过程中。通常,业务逻辑将提供采用用户名和密码作为输入然后将它们与数据库中的数据进行对比的授权方法。在这种情况下,数据和业务逻辑一起来组成两个状态:已授权和未授权。数据本身和业务逻辑本身都不能独立的产生这些状态。

根据上述的所有概念,Struts 2的action扮演了两个角色。首先,action将对业务逻辑的调用封装到唯一的工作单元。第二,action作为本地数据转换的场所。现在在讨论action还为时尚早,但是在本书中我们会对此主题给于详细的讲解。在这里,大家可以这样考虑,假定应用中有任意数量的action来处理它需要提供给客户端的命令。在图1.3中可以看到,控制器在接收到请求后,必须找出该请求的映射然后决定哪个action来处理该请求。一旦它找到合适的action,控制器即将请求的处理权通过调用action来交给action。这个调用过程,由框架发起,既准备了必要的数据又会执行action的业务逻辑。当action完成它的工作后,即到了将视图显示给提交该请求的用户的时候了。到这个时候,action即完成了它的工作,将会把结果发送给Struts 2的视图组件。让我们现在来看看这个结果。

view – 结果
视图(view)是MVC模式中的展示组件。再次看下图1.3,我们看到结果将页面返回给web浏览器。该页面是向用户显示应用状态的用户界面。通常这些是常规的JSP页面、Velocity模版或其他的显示层技术。因为对于视图有大量的选择,所以视图的角色是清晰的:它将应用的状态转换为用户可以与之交互的可视化展示。随着富客户端和Ajax应用的增多,视图层的细节也变得越来越复杂,因此更加清晰的MVC分离变得更加重要。良好的MVC分层使得管理更加复杂的前端变得比较容易。

注意:
Struts 2中比较有趣的一个方面是它为新技术和新方法提供了非常方便的集成方式。Struts 2的result组件是这个的很好的一个演示。result为最终将响应输出到客户端的控制对象提供了一个清晰的封装(The result provides a clean encapsulation of handing off control of the processing to another object that will write the response to the client.)。这使得替换为另一种响应,像XML或XSLT转换,很容易的就可以集成到框架中。

如果现在你回头看看图1.3,你会发现是action负责选择最终作为响应的result。action可以选择任意数量的result。通常的选择是根据action处理后的输出来执行的,如success、error等。Struts 2内置了将大部分常见视图层技术作为result的支持。这包括JSP、Velocity、Freemarker和XSLT。另外,清晰的架构保证了更多的result类型可以构建用于处理新的相应类型。

 

分享到:
评论

相关推荐

    Struts2 in action中文版

    1.3.2 Struts 2概览:MVC模式 10 1.3.3 Struts 2的工作原理 12 1.4 小结 14 第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 声明架构的两种方式 17 2.1.3 智能默认值 20 2.2 简单的HelloWorld...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts 2.3.4.1 最新英文版API

    org.apache.struts2.dispatcher Classes for action dispatching in Struts (the Controller part of MVC). org.apache.struts2.dispatcher.mapper org.apache.struts2.dispatcher.multipart Classes to help ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    1.1 Model 2概览 1 1.2 带servlet控制器的Model 2 2 1.2.1 Product动作类 3 1.2.2 ControllerServlet类 4 1.2.3 视图 6 1.2.4 部署描述文件 8 1.2.5 示例程序的运行 9 1.3 带过滤器调度程序的Model 2 9 1.4 小结 13 ...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    spring in action英文版

     10.1.2 实现知晓Spring的Struts action  10.1.3 委托action  10.2 使用Tapestry  10.2.1 替换Tapestry引擎  10.2.2 装载Spring Bean至Tapestry页面中  10.3 集成JavaServer Faces  10.3.1 解析...

    外文翻译 stus MVC

    Struts can help you control change in your Web project and promote specialization. Even if you never implement a system with Struts, you may get some ideas for your future servlets and JSP page ...

    Java Web程序设计教程

    5.2struts2概览 84 5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签...

    从J2SE到J2EE知识点介绍

    (一) 基于struts2的web应用的开发步骤 140 1. MVC设计模式() 140 2. 基于struts的web应用的开发步骤 141 3. 如何写自定义action,实体,以及业务类 141 (二) Struts2 153 1. struts2的拦截器定义以及使用 153 2. ...

    李兴华Java Web开发实战经典(高清版) Part2

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail...

    java web 视频、电子书、源码(李兴华老师出版)

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail...

Global site tag (gtag.js) - Google Analytics