Struts2内部执行过程

    首先是Struts2的流程图。

一、当有一个请求的时候。执行以下流程。

1 客户端初始化一个指向Servlet容器的请求;

2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)。

3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。(注:在Struts2的被StrutsPrepareAndExecuteFilter替换)

4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。

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

6 ActionProxy创建一个ActionInvocation的实例。

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

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

 Then:

在之前说过的使用Struts2框架实现用户登录的功能,使用Struts2标签和OGNL表达式简化了视图的开发,并且利用Struts2提供的特性对输入的数据进行验证,以及访问Servlet API时实现用户会话跟踪,其简单的程序运行流程图

login.jsp>>StrutsPrepareAndExecuteFilter>>Action>>Result>>success.jsp

下面通过分析登录程序,带领大家深入了解Struts2.

分析登录程序

为了实现用户登录的功能,需要经过以下几个步骤:

(1)获取Struts2资源

(2)在应用程序中导入Struts2的类库

(3)在web.xml文件中配置其核心控制器StrutsPerpareAndExecuteFilter,用于对框架进行初始化,以及处理所有的请求。

(4)编写Action类并进行配置。

(5)配置返回结果与物理视图资源的关系。

(6)编写返回视图

众所周知,Struts2框架是基于MVC模式的。基于MVC模式框架的核心就是控制器对所有请求进行统一处理。Struts2的控制器StrutsPrepareAndExecuteFilter由Servlet API中的Filter充当,当Web容器接收到登录的请求后,将请求交给在web.xml中的配置的过滤器StrutsPrepareAndExecuteFilter。

  

原文地址:https://www.cnblogs.com/bingshu/p/6918506.html