Struts2 创建Action对象并放入ValueStack的时机

1. 创建一个简单的Action

package com.web;
public class UserAction {
    private String name;
    public UserAction(){
        //随便加一行代码并添加断点
        System.out.println("==创建UserAction对象==");
    }
    public String execute(){
        System.out.println("执行execute方法...");
        System.out.println("name========="+name);
        return "success";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

2. 启动Tomcat服务器调试运行

//调用Action随便传入一个参数
http://localhost:8080/struts2Demo/userAction?name=admin

进入执行调试视图,方法的调用栈如下图所示
这里写图片描述
重点阅读DefaultActionInvocation.java的初始化方法,在该方法中完成如下事件

  1. 创建上下文环境
  2. ActionInvocation对象的共享
  3. 创建Action对象
  4. 将Action对象置入ValuesStack中
  5. 创建ActionInvocation的上下文环境
  6. 将拦截器堆栈置于初始调度状态

猜你喜欢

转载自blog.csdn.net/kongfanyu/article/details/53977151