对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中
当Servlet容器接收到一个客户请求时,如果客户请求的URL为*.do,那么首先由ActionServlet接收。ActionServlet将执行如下流程:
1、如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中
2、根据配置信息决定是否需要表单验证。如果需要表单验证,就调用ActionForm的validate()方法
3、如果ActionForm的validate()方法返回null或返回一个不包含ActionError的ActionServlet,就表示表单验证成功
4、ActionServlet根据配置信息决定将请求转发给哪个Action。ActionServlet创建一个ActionMapping对象,存放这个Action的配置信息。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的executr方法
5、Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给这个ActionForward对象指向的组件
6、ActionForward对象指向的JSP组件生成动态页面,返回给客户