Struts基础(一)
2019-08-16 12:36:12来源:博客园 阅读 ()
Struts基础(一)
1、Struts开发基础
1.1 MVC的基本概念
mvc将一个应用系统的输入、处理和输出流程按照Model(模型)、View(视图)和Controller(控制器)三部分进行分离,划分成模型层、视图层和控制层。三层之间以最少的耦合来协同工作,从而提高了应用
系统的可扩展性和可维护性。
MVC思想的核心就是分层。它将系统的各个组件进行分类,不同的组件扮演不同的角色,然后将系统中的组件分隔到不同的层中,这些组件将被严格限制在其所在的层内。各层之间则以松散耦合的方式组合在一起,从而保证良好的封装性。MVC三层之间的关系如图所示。
1. 模型层
模型层代表的是数据和其对应的业务逻辑。它负责对数据进行处理和更新。通常,模型和现实世界对数据的处理过程类似,业务处理的过程对于视图层和控制层来说是黑箱操作:模型层接受视图层(通过控制层传送到)的请求数据,并返回最终的处理结果,以更新视图层。
2.视图层
视图层实际上是模型层中各个模型的具体表现形式。它通过模型得到数据,然后再根据需要进行显示。视图层必须保持着与模型层的数据模型一致,即当模型层的数据发生变化时,视图层必须随之变化。
3.控制层
控制层在MVC结构中连接模型层和视图层,起到了纽带的作用。它将视图层的交互信息进行过滤等处理后,再传送到模型层相应的逻辑业务处理程序进行处理。
在Web应用中,视图层首先向控制层发送信息,控制层接收到请求后,再把请求信息传递给模型层,告知模型应该做什么处理,接着,模型接受请求数据,并产生最终的处理结果。模型层对应的动作包括:业务处理和模型状态的改变,最后根据模型层产生的结果,控制层将数据反馈给用户,并在浏览器中显示。
总的来说,MVC有如下特点:
- 低耦合性。MVC架构通过分层,降低了层与层之间的耦合,提高了程序的可扩展性,有助于程序员灵活的进行编码。
- 一个模型可以对应多个视图。按照MVC的设计模式,一个模型对应多个视图,可以提高代码的可维护性。即使模型发生改变,也方便维护。
- 模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,各层只负责自己的任务,而不用去管其他层的任务。
- 有利于工程化管理。MVC将不同的模型和不同的视图组合在一起进行管理,层与层之间分离,每一层都有各自的特色。由于代码可复用,因此降低了软件开发周期。
1.2 Struts的工作原理
1.Struts概述
Struts1是真正意义上的MVC模式,,但Struts1在性能高效、松耦低侵入等方面存在着不足之处。所以Struts2出现弥补了Struts1这方面的缺陷和不足,并且还提供了更加灵活与强大的功能。
Struts2并不是Struts1的升级版,而是一个全新的框架。它将Struts技术与WebWork技术完美地结合起来,所以功能更加灵活。
2.Struts2工作流程
Struts2是一个全新的开发框架,如图所示为Struts2的体系结构图。
- 橙色是Servlet Filters,过滤器链,所有的请求都要经过Filter链的处理。
- 浅蓝色是Struts Core,Struts2的核心部分,Struts2中已经做好的功能,在实际开发中不需要动它们。
- 浅绿色是Interceptors,Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;当然,也可以自定义拦截器,用来实现具体业务需要的功能。
- 浅黄色是User Created,由开发人员创建的,包括struts.xml、Action、Template,是每个使用Struts2来进行开发的人员都必须会的。
各自功能:
- FilterDispatcher是整个Struts2的调度中心,根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还没有执行的过滤器。
- ActionMapper提供了HTTP请求与action执行之间的映射,简单点说,ActionMapper会判断这个请求是否应该被Struts2处理,如果需要Struts2处理,ActionMapper会返回一个对象来描述请求对应的ActionInvocation的信息。
- ActionProxy是一个特别的中间层,位于Action和xwork之间,使得我们在将来有机会引入更多的实现方式,比如通过WebService来实现等。
- ConfigurationManager是xwork配置的管理中心,通俗的讲,可以把它看做struts.xml这个配置文件在内存中的对应。
- struts.xml是Stuts2的应用配置文件,负责诸如URL与Action之间映射的配置、以及执行后页面跳转的Result配置等。
- ActionInvocation:真正调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器实例。ActionInvocation会执行这些拦截器、Action以及相应的Result。
- Interceptor(拦截器):拦截器是一些无状态的类,拦截器可以自动拦截Action,它们给开发者提供了在Action运行之前或Result运行之后来执行一些功能代码的机会。类似于我们熟悉的javax.servlet.Filter。
- Action:动作类是Struts2中的动作执行单元。用来处理用户请求,并封装业务所需要的数据。
- Result:Result就是不同视图类型的抽象封装模型,不同的视图类型会对应不同的Result实现,Struts2中支持多种视图类型,比如Jsp,FreeMarker等。
- Templates:各种视图类型的页面模板,比如JSP就是一种模板页面技术。
- Tag Subsystem:Struts2的标签库,它抽象了三种不同的视图技术JSP、velocity、freemarker,可以在不同的视图技术中,几乎没有差别的使用这些标签。
Struts2处理请求步骤:
- 用户发出一个HttpServletRequest请求。
- 该请求经过一系列的过滤器Filter来传送。
- 调用FilterDispatcher。FilterDispatcher是控制器的核心,它通过询问ActionMapper来确定该请求是否需要调用某个Action。如果需要调用某个Action,则FilterDispatcher就把请求转交给ActionProxy处理。
- ActionProxy通过配置管理器Configuration Mannager询问框架的配置文件Struts.xml,从而找到需要调用的Action类。
- ActionProxy创建一个ActionInvocation的实例,该实例使用命名模式来调用。在Action执行的前后,ActionInvocation实例根据配置文件加载与Action相关的所有拦截器Interceptor。
- 一旦Action执行完毕,ActionInvocation实例就根据Struts.xml文件中的配置找到相对应的返回结果。返回结果通常是一个JSP或者FreeMarker的模板。其中,FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或Http。
原文链接:https://www.cnblogs.com/liyushan/p/11355229.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JVM 运行原理
- 04.Java基础语法 2020-06-11
- 1-Java基础回顾整理_01 2020-06-10
- Java基础语法菜鸟教程笔记 2020-06-10
- Java基础复习——类和对象 2020-06-09
- 计算机基础到底是哪些基础?为什么很重要! 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash