Struts2工作流程详解(7大执行流程图解)

Struts2工作流程详解(7大执行流程图解)-mikechen

Struts2工作流程主要分为7大执行流程,下面我会结合Strut2框架详解具体的7大Struts2工作流程。

Struts2流程结构图

Struts2的整个框架结构,如下图所示:

Struts2工作流程详解(7大执行流程图解)-mikechen

分为四种颜色。

1.橙色是Servlet Filters

所有的请求都要经过Filter链的处理。

 

2.浅蓝色是Struts Core

Struts2的核心部分就是Struts2中已经做好的功能,在实际开发中不需要动它们。

 

3.浅绿色是Interceptors

Struts2的拦截器,也是Struts2的核心之一,Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作。

当然你也可以自定义拦截器,用来实现具体业务需要的功能,用于过滤与拦截使用。

 

4.浅黄色是User Created

由开发人员创建的,包括struts.xml、Action、Template,这些其实就是在前面HelloWorld应用里面折腾的那些东西,是每个使用Struts2来进行开发的人员都必须会的。

 

Struts2工作流程步骤

Struts2基本流程如下:

第一步:客户端请求一个HttpServletRequest的请求。

比如:在浏览器中输入http://localhost: 8080/getUsername.action就是提交一个HttpServletRequest请求。

请求会被Tomcat接收到,TomcatServer来选择处理这个请求的Web应用。

 

第二步:这个请求经过一系列的过滤器Filter。

Struts2工作流程详解(7大执行流程图解)-mikechen

这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器,比如:ActionContextCleanUp、其他过滤器SiteMesh等、 FilterDispatcher等。

注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器:Othter Filters、SiteMesh等,最后到FilterDispatcher(Struts2实现中控制层Controller的核心)。

 

第三步:接着FilterDispatcher被调用

FilterDispatcher是struts2框架的心脏,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个HttpServlet Request请求。

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

 

第四步:ActionProxy通过struts.xml询问框架的配置文件

找到需要调用的Action类,例如:用户注册示例将找到UserReg类。

 

第五步:ActionProxy创建一个ActionInvocation实例

同时ActionInvocation通过代理模式调用Action,但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor拦截器。

 

第六步:根据struts.xml中的配置找到对应的返回结果

一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。

 

第七步:返回结果

最后通过HTTPServletResponse返回客户端一个响应。

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法