上图中缺少验证失败后保存在原页面的流程
struts运行原理
1、用户提交请求后被过滤器FilterDispatcher拦截,清理当前线程的ActionContext和Dispatcher防止内存泄漏
2、询问ActionMapper该请求是否需要调用某个Action,(该请求以默认扩展名.action结尾)
3、将请求处理交给ActionProxy,通过配置管理器访问配置文件(struts.xml)找到需要调用的Action类及其命名视图与物理视图的映射关系
4、ActionProxy创建ActionInvocation实例,并创建对应action实例负责处理请求
5、Action执行环境首先调用struts自带的一系列内部拦截器(如请求参数注入到action实例中)或用户定义的拦截器(session过期验证等)再调用validate()方法对表单字段进行验证。
6、验证通过转入struts.xml配置中指定的方法执行
下图为struts官方图