struts1.x原理与应用(一)

 一、通过顺序图剖析sturts执行流程.


struts1.x原理与应用(一)_第1张图片

由上图可以struts1.x对请求的处理过程:

     1、默认情况下,*.do请求都将交给struts框架处理,首先会由控制器ActionServlet拦截请求,在处理请求前会做一些初始化的工作,然后再转交给请求处理器RequestProcessor处理.

     2、RequestProcessor根分析请求url,在配置文件struts-config.xml中找到相对应的ActionForm,实例化ActionForm并根据类的反射填充ActionForm,将表单元素值封装成一个ActionForm对象.

     3、对ActionForm对象每个成员属性进行校验,校验失败将直接返回<action />的input属性所指定的页面。如果校验成功就往下执行.

     4、RequestProcessor实例化Action并调用Action的execute方法。对于某一些action可能还会进行业务逻辑校验。
     5、业务逻辑校验通过后,返回一个ActionForward对象并转发到该对象指定的一个成功页面。


二、RequestProcessor的处理过程

     RequestProcessor是处理请求的核心类,处理请求步骤如下 :

          1、调用processPath()方法, 确定选择将要处理的动作的路径,如:/login.do,就会取出/login字符串,赋值给变量path.

          2、调用processMapping()方法,根据path路径,在配置文件struts-config.xml找到与之对应的action映射,并返回一个ActionMapping的对象,该类封装了<action />里的属性值的方法,如validate、scope等属性的值.
          3、调用processActionForm()方法,根据ActionMapping的对象新建一个Form Bean 或从请求会话中检索Form Bean。

          4、调用processPopulate()方法,填充与请求关联的Form Bean (即把表单元素的数据封装成一个ActionForm对象).

          5、调用processValidate()方法,校验form bean数据是否合法.    
          6、调用processActionCreate()方法,实例化当前ActionMapping关联的类的实例.

          7、调用processActionPerform()方法,内部将调用action的execute() 方法,执行完后将返回ActionForward对象所指定的页面.

你可能感兴趣的:(bean,工作,xml,框架,struts)