题外话:
web启动时,先加载web.xml,(如果有ServletContxt的Listen)则初始化,然后初始化Struts2的filter,再会加载struts.xml中定义的Interceptor的init方法。
ps:如果有对应的Listen,则Listen在Filter调用doFilter之前调用。
PrepareAndExecuteFilter:
Prepare: 设置字符编码和本地化信息;创建ValueStack和OGNLContext
OGNLContext:存放valueStack 和 request、session、application、attr;并将valuestack作为root对象。
executor:serviceAction: 利用actionProxy调用actionInvocation创建调用crateAction, 并将action放入到valueStack, struts2中每一个Request都会创建一个新的Action, 在action执行前进行interceptors
actionInvocation: 管理action,包含createAction、init Interceptor、InvokeAction、getResult
http://my.oschina.net/winHerson/blog/106573;这里面讲的很详细