Struts2运行过程简介

来源:互联网 发布:支付宝绑定淘宝账号 编辑:程序博客网 时间:2024/04/29 22:43

利用Struts2框架写一个HelloWorldAction入门案例执行流程:

这里写图片描述

(0)项目启动,struts.xml文件被加载(这个文件包括了struts2的action配置文件)
(1)客户端发送请求helloWorld.action,被StrutsPrepareAndExecuteFilter所拦截
(2)StrutsPrepareAndExecuteFilter根据请求url调用对应的Action类
(3)对应的action类执行execute()方法,返回逻辑视图名给StrutsPrepareAndExecuteFilter
(4)StrutsPrepareAndExecuteFilter根据逻辑视图名在配置文件中找到对应的视图页面,并转发到视图页面(假设是success.jsp,这里要知道jsp其实是Servlet的变体)
(5)对应的视图页面(success.jsp)生成响应内容给StrutsPrepareAndExecuteFilter
(6)StrutsPrepareAndExecuteFilter输出响应给客户端。

针对上面的流程,这里来做一个Struts2的执行流程分析:

先上图:

这里写图片描述

一个请求在Struts2框架中的处理可以分为以下几个步骤:
(1)客户端浏览器发送一个请求
(2)程序会调用StrutsPrepareAndExecuteFilter,然后询问ActionMapper这个请求是否需要调用某个Action
(3)如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter会把这个请求交个ActionProxy(action代理)
(4)ActionProxy通过配置管理器(Configuration Manager)从配置文件(struts.xml)中读取框架的配置信息
(5)ActionProxy(action代理)会创建一个ActionInvocation实例
(6)ActionInvocation使用命名模式来调用Action,在调用Action之前,会依次调用所有配置的拦截器(Interceptor1、Interceptor2、….)
(7)一旦Action执行完,返回结果字符串,ActionInvocation就会负责查找结果字符串对应的Result,然后执行这个Result。通常Result会调用一些模板(比如JSP等)来呈现页面
(8)产生的Result信息返回给ActionInvocation,此过程中拦截器会再次被执行(顺序与之前的相反)
(9)执行完拦截器后ActionInvocation会产生一个HttpServletResponse的响应行为,通过StrutsPrepareAndExecuteFilter反馈给客户端

0 0
原创粉丝点击