struts2框架运行流程原理


struts2框架运行流程原理

啥都不说,先上图~
struts2框架运行流程原理图片描述


第一步:判断是否需要struts2管理

请求到来,首先经过过滤器ActionPrepareAndExcuteFilter(以下简称filter),经过filter内部的ActionMaper方法判断后确认是否需要struts2框架进行处理(ActionMaper方法是用来判断请求是否需要struts2处理,如果需要,那么由ActionProxy来接管,通过配置管理我们可以找到我们的struts.xml,然后进入真正做事的Action);


第二步:获取核心配置文件信息

进入ActionProxy动态代理中,由Configeraction manager进行读取核心配置文件,其目的是从核心配置文件中获得请求所需要的action方法的配置信息(例如是否存在此action、action访问路径等信息);


第三步:请求相关的action信息交给拦截器组

将在核心配置文件中查询到的相关信息通过Configeraction manager反馈给ActionProxy动态代理对象,由ActionProxy动态代理对象将此信息传递给Action Invocation


第四步:经过拦截器过滤获得String类型的结果

Action Invocation就是一套拦截器的集合,在这个里面有着默认的20个拦截器,可以在struts-default.xml文件中查看到,如下图所示:
拦截器的集合图片描述
经过一系列的拦截器过滤后,获得一个String类型的结果(这个string类型的结果就是我们在action类中设置的结果返回值return “xxx”;,一般我们都是设置成SUCCESS的;


第五步:根据String类型的返回结果与核心配置文件中的相匹对

将获得的结果返回值交给核心配置文件中的action配置标签,在action配置标签中有一个result标签,获得的返回值名称要与result标签中的name值一致,然后调用result标签中指定的方法或者跳转到相应的页面;
返回结果图片描述


第六步:再次经过拦截器将最终结果返回给客户

再次经过从内而外的层层拦截器的过滤后将返回的结果响应给客户;


这就是Struts2的工作原理流程~

《END》