1.如图
2.Struts2框架处理步骤:
- (1) 客户端初始化一个指向Servlet容器的请求。
- (2) 这个请求经过一系列的过滤器(Filter)。
- (3) 接着核心控制器FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定调用某个Action。
- (4) 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy(动作代理)。
- (5) ActionProxy通过Configuration Manager(配置管理)询问框架的配置文件,找到需要调用的Action类。
- (6) ActionProxy创建一个ActionInvocation(将Web页面中的输入元素(请求)封装为一个数据对象)的实例。
- (7) ActionInvocation实例使用命令模式来调用,在调用Action的过程前后,涉及相关Intercepter(拦截器)的调用。
- (8) 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是一个需要被表示的JSP或FreeMarker的模板。在表示的过程中可以使用Struts2框架中继承的标签,在这个过程中会涉及到ActionMapper。
3.总结
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
个人理解:Struts2框架就是为了实现动态的响应用户的请求,就是通过配置文件来实现请求想要实现的Action,然后以明确的形式返回用户所想要的结果。
注:
- 如有不正确还请见谅。
- 另外,我做了一些关于Spring、Struts、Hibernate的小应用可以帮助理解这些框架,如需代码请访问我的Github:https://github.com/Zxnaruto