• Strut2流程分析-----从请求到Action方法()



    手写请求会通过strutsPrepareAndExcuteFliter的doFilter()方法
    然后会调用StrutsActionProxy类的excute()方法,生成一个代理类(ActionProxy)
    ActionProxy 是 Action 的一个代理类,也就是说Action的调用是通过 ActionProxy 实现的,
    而该方法又调用了ActionInvocation.invoke()方法
    然后调用DefaultActionInvocation的invoke()//通过不断的回调这个方法,调用了所有拦截器
    ActionInvocation就是Action的调用者。
    ActionInvocation在Action的执行过程中,负责Interceptor、Action和Result等一系列元素的调度。
    */
    public String invoke() throws Exception {
    String profileKey = "invoke: ";
    try {
    UtilTimerStack.push(profileKey);

    if (executed) {
    throw new IllegalStateException("Action has already executed");
    }

    if (interceptors.hasNext()) {//拦截器集合,不断的回调,
    final InterceptorMapping interceptor = interceptors.next();
    String interceptorMsg = "interceptor: " + interceptor.getName();
    UtilTimerStack.push(interceptorMsg);
    try {
    resultCode = interceptor.getInterceptor().intercept(DefaultActionInvocation.this);
    }
    finally {
    UtilTimerStack.pop(interceptorMsg);//拦截器回调完后,最终通过这个方法来调用Action类方法
    }
    } else {
    resultCode = invokeActionOnly();
    }

  • 相关阅读:
    centos安装vim
    thrift学习之二----学习资料积累
    thrift学习之一-------介绍
    组合模式
    一致性哈希算法(consistent hashing)
    php配置php-fpm启动参数及配置详解
    error while loading shared libraries的解決方法
    数据结构之二叉树
    768、最多能完成排序的块(贪心算法)
    VS code 配置C++编译环境
  • 原文地址:https://www.cnblogs.com/jeremy-blog/p/3990854.html
Copyright © 2020-2023  润新知