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对。