简单说struts2框架运行流程

(1)提交请求客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求。请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Other filter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到。注:核心控制器2.1.3版本之后,struts的filterDispatcher核心控制器变成了StrutsPrepareAndExecuteFilte被核心控制器控制到之后才会访问Actionmapper来决定是否调用某个action(即用户是否要请求某个action)。如果是其他资源请求例如jsp页面,不会用到action。

(2)移交控制权

如果要用到action,核心控制器将控制权交给ActionProxy(即是action的代理)。

ActionProxy获得控制权之后通过ConfigurationManager对象加载核心配置文件struts.xml。

Struts的action在这个配置文件进行配置,所以要加载它。

(3)创建ActionInvocation的实例

如果在struts.xml找到需要调用的action, ActionProxy会创建一个ActionInvocation的实例。

(4)调用action前的拦截器

拦截器是struts2非常重要的概念,是核心功能实现。Struts中的大部分功能通过拦截器实现。

Actioninvocation包括创建的action实例,同时包括另外非常重要的一部分------拦截器。

调用action前后还会调用很多的拦截器。

在调用action之前会依次调用用户所定义的拦截器。

(5)调用action的业务方法进行业务处理

当把action前的拦截器执行完之后才会调用action的业务方法进行业务处理,

然后返回一个Result(业务方法对应String类型的返回值,即是字符串,例如SUCCESS,INPUT,ERROR,NONE,LOGIN和用户自己在struts对应定义result标签name属性的值)

(6)匹配result

然后根据返回的字符串来调度我们的视图来匹配我们的struts.xml中对应action标签中的result标签。

一般来说返回一个jsp的页面,或者调用另外某一个action。

(7)反向执行拦截器

当返回视图之后并没有真正响应用户,还需要把执行过的拦截器倒过来反向执行一遍。

(8)响应客户端

当这些拦截器被反向执行之后,通过HttpServletResponse响应客户端的请求。

时间: 2024-10-12 22:41:57

简单说struts2框架运行流程的相关文章

Struts2框架运行流程及案例

Struts2框架 Struts2由Struts1和WebWork两个经典的MVC框架发展起来,是一个非常优秀的MVC框架.Struts2中的execute()方法不再与servlet API耦合,因而更容易测试.Struts2支持更多的视图技术,提供了基于AOP思想的拦截机制,以及更强大更容易使用的校验功能和ajax支持. 所有的Web项目都是基于请求/响应模式而建立的.在web.xml中配置Struts的核心Filter就能将Web的流程转入到Struts框架内. Struts2的运行流程图

Struts2系统运行流程(2)

在上一篇中已经说过了Struts2的系统的基本原理(http://blog.csdn.net/xlgen157387/article/details/45840719),下边说一下Struts2的运行流程: 举个简单的案例,就是一个helloworld的案例,下边对其进行进行详细的解释. 案例基础内容: 我们在使用Struts2的时候会在web.xml文件中进行配置过滤器:编写一个Action类,这里起个名字叫做HelloWorldAction:在struts.xml中进行配置这个Action.

struts2 框架处理流程

struts2 框架处理流程 流程图如下: -->FilterDispatcher过滤器在2.1.3以后被StrutsPrepareAndExecuteFilter所替代,使得在执行Action之前可以添加过滤器了: -->客户端初始化一个指向servlet容器的request请求,请求经过一系列的过滤器,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action. 1)Struts2框架的大致处理流程: ①     浏览器发出请求,例如请求/log

图文解析Struts2框架执行流程

struts的架构图 (1)提交请求 客户端通过HttpServletRequest向servlet容器(即tomcat)提交一个请求. 请求经过一系列的过滤器,例如图中的ActionContextCleanUp和Other filter(SlterMesh,etc)等,最后被struts的核心过滤器FilterDispatcher控制到. 注:核心控制器2.1.3版本之后,struts的filterDispatcher核心控制器变成了StrutsPrepareAndExecuteFilte,如

简单的struts2框架(三)

相对于上篇博客<简单的struts2框架(二)>的改变,action的动态调用: 在struts.xml方法调用 1 <action name="userAction_*" class="action.UserAction" method="{1}"> 2 <result name="success" type="dispatcher">/user/Success.jsp

简单的struts2框架(四)---封装实体

接着以前的<简单的struts2框架(三)>,进一步优化 封装实体: 在action声明实体类:private Users user; 对实体类进行get,set方法 这样在方法里就不用对实体类进行一个个属性set值了,直接调用实体就可以了,免去了原来赋值的很多代码 代码: 1 private Users user; 2 private UserService userservice=new UserService(); 3 /** 4 * 用户注册 5 * @return 6 */ 7 pu

走进Struts2(一) — Struts2的运行流程及其工作原理

 Struts2是一套非常优秀的Web应用框架,实现优雅.功能强大.使用简洁.可以说是Struts2是一款非常成熟的MVC架构. 在我们学习Struts2时,最好是先学习它的运行流程.核心概念,从中得到启发,提升自己,而不仅仅是学习怎么怎么使用它. 在网上看到这样一句话: 你千万不要成为一个只会熟练使用框架的程序员,那样,你会疲于奔命,你也许永远只会使用 Hadoop ,而写不出一个 Hadoop ,你只是一个 Hadoop程序员,而不是一个分布式工程师. 你也许永远只会使用 Struts,而忘

Struts2框架执行流程详解

1. Struts2源码导入对于struts2框架它的源代码我们主要使用三部分 struts2核心部分源代码 org.apache.struts2xxsrc\core\src\main\java struts2的xwork核心部分源代码src\xwork-core\src\main\java\com\opensymphony\xwork2 struts2的插件的源代码src\plugins2. 关于struts.xml配置文件中提示问题第一步在eclipse的window下首选面中查找xml c

Struts2的运行流程及其工作原理

1 客户端初始化一个指向Servlet容器的请求 2 这个请求经过一系列的过滤器 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy  5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类  6 Ac