在了解Struts2框架之前,我们必须知道以下几点:

       首先,我们得了解什么是框架(软件工程)?框架是一种结构化的软件,结构化相对于需求功能来说是框架需要实现的更重要的目标。框架尽量将特定领域的日常任务和具体问题的处理流程抽象化,然后提供一个平台,基于这个平台可以更快的构建Web应用程序,目前框架的定义还是比较广泛的,从框架不同角度会存在很多不同的定义,比如从应用方面,框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;从目的方面一个框架是在一个给定的问题领域内,一个应用程序的一部分设计与实现。

  其次,我们得了解框架有什么作用?因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。其实说白了,框架有两大点我们不可忽视的作用:第一,框架自动化了常见的任务。“不要重复的造轮子”,我们在开发web项目的时候,试想一下如果没有框架,我们必须自己实现哪些web项目不可缺少的功能?比如HTTP字符串转换为JAVA数据类型、数据验证、调用业务逻辑以及数据层以及怎么展示,而框架就帮我们简化了这些任务。第二,框架提供了架构解决方法,很多新人在刚进入web项目开发时不知道从哪里开始进行,这时候引进框架,你会发现按照框架给定的开发思路,会很快的搭建一套自己的web项目。

        最后,我们为什么要学习这些主流框架?其实我们听说很多大企业都有自己开发的框架,但那也是少数的一些大企业,市场上大多数公司还是用主流框架,所以掌握几个主流框架,对我们跳槽来说是必须的,并非所有人都能像大牛那样自己搭建框架,那些人只是少数,我们只要用好这些框架实现自己的任务,熟悉其中的原理,那我们也是成功的。

       Struts2作为一种遵循MVC设计模式的框架,很好的对前端、业务逻辑以及控制器之间的解耦。以下图片展示了Struts2处理web应用的工作流。

wKiom1efE9KRIuh8AABG8ml1f08771.png

根据以上图片我们会简单介绍MVC的关注点以及Struts2履行的这些职责。

1.控制器-FilterDispatcher/StrutsPrepareAndExecuteFilter(根据jar版本不同)

   Struts2中使用的MVC也被称为前端控制器MVC,这意味着控制器在最前端,是请求处理过程中第一个被触发的组件。控制器的作用是将请求映射到工作,在Web应用项目中,传入的HTTP请求可以被视为用户向Web应用程序发送的命令,Web应用程序的一个基本任务就是将这些请求路由到Web应用程序中需要执行的一系列动作。Struts2中的控制器由FilterDispatcher或者StrutsPrepareAndExecuteFilter来扮演,这个重要的对象是一个Servlet过滤器,他检查每一个传入的请求,决定哪个Struts2动作处理这个请求。框架会帮你完成所有的控制任务,你只需要告诉框架哪个请求URL需要映射到哪个动作即可。

2.模型

  Struts2中的模型是有动作组件实现。什么是模型,意思就是应用程序内部状态,这个状态由数据模型和业务逻辑共同组成。比如一个登陆功能,业务逻辑以及数据库存放都会参与身份验证的过程,我们会设计业务逻辑从数据库中拿去数据验证,这种情况下就会形成两种状态,一个是验证通过或者是验证不通过,缺少业务逻辑或者数据我们都不可能完成实际的登录效果。

  Struts2的动作组件就是将业务逻辑封装进一个单独的工作单元,同时在这个单元里对数据进行传输。两者共同作用来实现功能。

3.视图

  视图是MVC模式的呈现功能,即将模型处理结果展示给用户看,良好的界面是提高客户体验的重要方面,大多数用户对页面的要求还是很高的。

  总之,Struts2很好的实现的MVC的设计思路,利用好Struts2对于快速搭建项目以及后期维护都会方便很多。