Struts2内部一个粗略的执行过程

Struts2内部一个粗略的执行过程

1url:userAction_saveUser.action

2)开始:doFilter()

3prepare.createActionContext(request,response) 创建actionContext上下文

 1.创建值栈valueStack

 2.创建actionContext并且把actionContext放入到threadLocal

 3.因为valueStackactionContext的一个属性,所以valueStack也在threadLocal

这样就解决了数据安全性的问题

很多框架喜欢用threadLocal解决线程安全

 

值栈是struts2传递数据的数据结构,怎么保证数据的安全性?

action是多例的


4executeAction(){

1.创建代理对象(静态) ActionProxy

(a) 创建action

(b) action放入栈顶

(c) 得到所有拦截器,并且产生拦截器的迭代器

2.代理对象的execute(DefaultActionInvaction:invoke)

    (a) 执行所有的拦截器

    (b) 调用请求的action类中的方法

    (c) 执行结果集

}

 

(5)清空actionContext中的所有内容,参数置为null(最后会清空数据,不影响下次使用)

你可能感兴趣的:(Struts2内部一个粗略的执行过程)