1 读取配置 (初始化ModuleConfig对象)
A 由于在web.xml中配置了<load-on-startup>0</load-on-startup> , ActionServlet在servlet容器启动的时候启动,然后读取struts-config.xml配置文件中的信息,并且根据这些信息为struts不同的模块初始化ModuleConfig对象:
ActionConfig, ControlConfig, FormBeanConfig, ForwardConfig, MessageResourcesConfig
2 发出请求
浏览器客户端向web服务器发出请求,servlet容器根据配置,将.do请求交由ActionServlet处理
3 填充form
根据url的请求路径,ActionServlet在ActionConfig中找到对应的Action,并且查找对应域,session或者request中的formbean,如果没有找到,就通过反射得到一个新的formbean对象,并且马上存入相关作用域,反之如果已经存在这样一个ActionForm,则ActionForm首先被reset,然后其对应属性被http请求参数填充,然后调用validate方法进行校验。
4 派发请求
ActionServlet将调用xml文件中所配置的对应Action中的execute()方法,第三步中填充的formbean也会作为第二个参数传递,如果在struts-config.xml配置文件中Action对应的标签没有name属性,或者name属性没有找到对应的formbean标签,就将form参数设置为null去调用execute方法。
5 处理业务
Action一般只包含一个execute()方法,在这个方法中通过调用业务层的模块进行业务逻辑处理
6 返回响应
execute()方法返回给ActionServlet的是一个ActionForward对象,该对象包含了转发的信息,代表了一个具体的JSP页面或者其他Action,ActionServlet通过这个返回的对象进行转发操作。
7 查找响应
ActionServlet根据返回的ActionForward查找到要响应的资源,一般是个JSP页面
8 响应用户
ActionServlet渲染响应页面并且将之返回