1. Browser: submit html form
2. Servlet Container: receive http request and encapsulate a HTTPServletRequest and ServletContext.
3. Struts 2 FilterDispatcher/StrutsPrepareAndExecuteFilter: receive HTTPServletRequest and
Prepare Phase: set up Locale and ActionContext, etc
doFilter Phase: ?
executeAction Phase: create ActionProxyobject with a new ActionInvocationobject inside. Take a look at DefaultActionProxyFactory and DefaultActionInvocation.
4. ActionInvocation: invoke() call interceptors.
4.1. ParametersInterceptor: Put ActionContext's data into ValueStack. This interceptor sets all parameters on the value stack. This interceptor gets all parameters from {@link ActionContext#getParameters()} and sets them on the value stack by calling {@link ValueStack#setValue(String, Object)}, typically resulting in the values submitted in a form request being applied to an action in the value stack. Note that the parameter map must contain a String key and often containers a String[] for the value.
4.2. PrepareInterceptor
Model
Action