Struts2与WebWork的工作方式类似,它同样使用了拦截器作为其处理用户请求的控制器。在Struts2中有一个核心控制器FilterDispatcher,这个核心控制器相当于Struts1的ActionServlet类。FilterDispatcher负责处理用户的所有请求,如果遇到以.action结尾的请求url,就会交给Struts2框架来处理。

Struts2工作流程:

1.客户端浏览器发送请求,如baidu/page.action等。

2.核心控制器FilterDispatcher接收请求后,根据后面的扩展名,来决定是否条用Action,以及调用哪个action。

3.在调用action的execute方法之前,Struts2会调用一系列的拦截器提供一些通用功能,如workflow、验证或者上传文件等功能。这些拦截器的组合被称为拦截器链。

4.在调用完拦截器后,Struts2就会调用Action的execute方法。在execute方法中就会执行用户相关的操作,如执行某种数据库操作,处理业务逻辑等。

5.根据Action的execute方法的返回值,会将处理结果信息返回到浏览器,这些结果可以使html页面、jsp页面、图像,也可以是任何web资源。