Struts 工作原理流程
第一:
在 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从
struts-config.xml 文件中读取配置信息,把它们存放到各种配置对象
,例如:Action 的映射信息存放在 ActionMapping 对象中.
当 ActionServlet 接收到一个客户请求时,将执行如下流程.
-(1)检索和用户请求匹配的 ActionMapping 实例,如果不存在,就返回请求
路径无效信息;
-(2)如果 ActionForm 实例不存在,就创建一个 ActionForm 对象,把客户提交的
表单数据保存到 ActionForm 对象中;
-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用 ActionForm 的 validate()方
法;
-(4)如果 ActionForm 的 validate()方法返回 null 或返回一个不包含 ActionMessage
的 ActuibErrors 对象,就表示表单验证成功;
-(5)ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给
哪个 Action,如果相应的 Action 实例不存在,就先创建这个实例,然后调用
Action 的 execute()方法;
-(6)Action 的 execute()方法返回一个 ActionForward 对象,ActionServlet 再把客户请求转发
给 ActionForward 对象指向的 JSP 组件;
-(7)ActionForward 对象指向 JSP 组件生成动态网页,返回给客户;
第二:
在 web 服务器启动的时候就会自动加载 ActionServlet,ActionServlet 从 struts-config.xml 文
件中读取配置信息,把他们存放到各种配置对象
当 ActionServlet 接收到一个客户请求的时候,将执行如下流程:
(1)检索和用户请求匹配的 ActionMapping 实例,如果不存在,就返回请求路径无效
(2)如果 ActionForm 实例不存在,就创建一个 ActionForm 对象,把客户提交的表单数据
保存到 ActionForm 中
(3 )根据配 置信息决定是 否 需 要表单验证, 如果需要验证 , 就 调用 ActionForm 的
validate()方法;
( 4 ) 在 ActionForm ( ) 的 方 法 返 回 一 个 null 或 者 一 个 不 包 含 ActionMeassage 的
ActionError 对象,就表示表单验证通过
(5)ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发个哪个 Action,
如果相应的 Action 不存在,就创建这个实例,再调用其 execute()方法
(6)Action 的 execute()方法返回一个 ActionForward 对象,ActionServlet 再把客户请求转
发给 ActionForward 对象所指的 jsp 组建