目录

struts的功能就是根据用户访问不同的url,把请求分发给相应的action类处理。实现了MVC架构中的V,C分离

struct依赖的配置文件

struts运行步骤

  1. 客户端发送请求
  2. 请求先通过过滤器ActionContextCleanUp–>FilterDispatcher
  3. FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action(struts.xml中有配置)
  4. 如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
    1. 如果url是静态资源,则直接返回资源
  5. ActionProxy找到需要调用的Action类(struts.xml中有配置)
  6. ActionProxy创建一个Action类的实例
  7. 执行action之前,先调用相关拦截器(struts.xml中有配置)
  8. 执行actionaction类中实现了对用户请求的处理逻辑,以及决定返回给用户哪些内容
  9. 根据action的结果找到对应的html模板页面(struts中有配置),生成一个response页面
  10. 然后再次执行action之前的拦截器
  11. 返回给用户response页面

action类代码

public class FileUploadAction extends ActionSupport implements ServletContextAware {
    public String execute() throws Exception {
        System.out.println("execute");
        return this.SUCCESS;
    }
}

拦截器代码

拦截器统计action执行时间

public class MyInterceptor extends AbstractInterceptor {
	public String intercept(ActionInvocation invocation) throws Exception {
		long startTime = System.currentTimeMillis(); 
		String result = invocation.invoke();// 调用下一个拦截器,如果没有其他拦截器则调用action
		long endTime = System.currentTimeMillis();
		System.out.println("Action执行共需要" + (endTime - startTime) + "毫秒");
		return result; 
	}
}