struts2的工作原理和相关文件的介绍

来源:互联网 发布:银临和灰原穷夫妇 知乎 编辑:程序博客网 时间:2024/06/06 19:51

struts2的工作原理和相关文件的介绍

struts2的工作原理可以用下面这张图来描述:

从图中可以看到,一个请求在struts2框架中的处理大概分为以下几个步骤。

1、客户端浏览器发起一个请求(HttpServletRequest),例如,在上篇博文中在创建第一个基于struts2框架的web程序时,我们在浏览器中输入的:http://localhost:8080/HelloWorldAction/helloworld.action. 就是一个请求。

2、在客户端提出请求后,这个请求会经过一系列的过滤器(filter),这些过滤器中的ActionContextCleanUp是一个可选过滤器,这个过滤器对于struts2和其它框架的集成很有帮助,例如:SiteMesh Plugin)。

3、接着FilterDispatcher(现已被StrutsPrepareAndExecuteFilter)取代,StrutsPrepareAndExecuteFilter会询问ActionMapper来决定这个请求是否需要调用某个Action。如果ActionMapper决定需要调用某个Action,FilterDispatcher就把请求交给ActionProxy。

4、ActionProxy通过Configuration Manager询问框架配置文件struts.xml,找到需要调用的Action类。

5、ActionPorxy会创建一个ActionInvocation实例。

6、ActionInvocation实例使用命名模式来调用,在调用action前后,涉及到相关拦截器(Intercepter)的调用。

7、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker,Velocity的模版。

以上就是struts2框架的工作原理。

核心文件介绍

web.xml

任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件张Servlet才会被应用加载。

通常,所有的MVC框架都需要Web应用加载一个核心控制器。就struts2而言,需要加载StrutsPrepareAndExecuterFilter,只要Web应用负责加载了StrutsPrepareAndExecuterFilter,StrutsPrepareAndExecuterFilter就会加载struts2框架。

因此,一般来说,我们的web.xml文件中的内容就是下面这个样子的:

这样,web就加载了struts2中的StrutsPrepareAndExecuterFilter,StrutsPrepareAndExecuterFilter也就自动加载了struts2框架。

struts.xml文件

struts2是核心配置文件,在开发过程中利用率最高的文件。该文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。

struts.xml中包含的内容有如下几点:

1、全局属性

2、用户请求和响应Action之间的对应关系。

3、Action可能用到的参数和返回结果

4、各种拦截器的配置。

struts.properties

全局属性可以在struts.xml中存放,如果在struts.xml文件存放,则使用constant元素,但是我们一般不推荐,全局属性我们一般选择放在struts.properties文件中。

例如:name=”wuranghao”

struts.properties文件是struts2框架的全局属性文件,自动加载,该文件包含很多key-value对。

参考资料

1、http://blog.csdn.net/laner0515/article/details/27692673/

1 0