public class Dispatcher{
//提供了一个静态的ThreadLocal变量
private static ThreadLocal<Dispatcher> instance=newThreadLocal<Dispatcher>();
//提供一个接口方法,用于获得当前线程安全的Dispatcher实例
public static Dispatcher getInstance(){
return instance.get();
}
//将Dispatcher实例绑定到当前线程
public static void setInstance(Dispatcher instance){
Dispatcher.instance.set(instance);
}
}
ThreadLocal实际所承载的是Dispatcher本身,作为一个线程安全的对象,Dispatcher涵盖了struts2的整个生命周期。Dispatcher是struts2与xwork的分界点,也是MVC实现与web容器隔离的分界点。。。。解耦
Provider(配置元素的加载器)
Builder(配置元素的构造器)
Configuration(配置管理元素)
OCNL:表达式引擎,架起外部世界与java世界沟通的桥梁。
xwork:请求处理器,将请求划分为若干处理步骤并分配到不同的处理元素调度执行。
http请求的预处理阶段:
入口程序:StrutsPrepareAndExecuteFilter
xwork框架的入口类:ActionProxy