目录
1 官方图示
2 梳理流程
1.发出请求
2.进入框架:经过框架核心控制器(StrutsPrepareAndExecuteFilter,在 web.xml 中配置) StrutsPrepareAndExecuteFilter 是 Struts2 框架核心控制器,负责拦截由 <url-pattern>/*</url-pattern> 指定所有用户请求。
默认情况下,如用户请求路径不带后缀或者后缀以.action结尾,请求将被转入Struts2框架处理,否则Struts2框架将略过该请求。配置文件:struts2-core-2.x.x.x.jar包下的org.apache.struts2/default.properties文件定义的常量决定。
3.查找ActionMapper,委托ActionProxy:核心控制器依次查找ActionMapper来决定是否调用action。如ActionMapper决定调用action,核心控制器就把请求处理器控制权委托给ActionProxy。
4.查找Action:ActionProxy通过configuration manager查询struts框架配置文件(struts.xml)找到所要调用的action类。
5.创建ActionInvocation,激活拦截:Actionproxy创建一个ActionInvocation实例,该实例负责命令模式的实现,包括激活action的任意拦截器。
6.调用Action方法,查找result,作出响应:在action执行完成后,ActionInvocation实例负责根据action的返回结果码在struts.xml配置文件中找到所需要的 result,该结果通常是jsp或者freemarker模板,也可能是action。
7.逆序响应拦截器:action配置的拦截器将再次执行(执行顺序和调用的时候相反) 。
8.返回:服务器响应将通过web.Xml文件配置的struts2框架核心控制器返回。
3 简化流程图示