Struts2工作流程主要分为7大执行流程,下面我会结合Strut2框架详解具体的7大Struts2工作流程。
Struts2流程结构图
Struts2的整个框架结构,如下图所示:
分为四种颜色。
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。
这个请求会经过图中的几个过滤器,最后会到达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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》