struts1工作原理

struts1的工作原理图:

 

struts1的工作原理

 

  1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的

            Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts

            中不同的模块初始化相应的对象。(面向对象思想)

  2.发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。

  3.form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员

              变量中。

  4.派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并

              传给这个Action中的excute()方法。

  5.处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)

              完毕后返回一个ActionForward对象。服务器通过ActionForward对象进行转发工作。

  6.返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。

  7.查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下

              为jsp页面。

  8.响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户

 

 

 

 

 

ActionServlet是一个FrontController,它是一个标准的Servlet,它将request转发给RequestProcessor来处理,   ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息   RequestProcessor根据提交过来的url,如*.do,从ActionMapping 中得到相应的ActionForn和Action。然后将request的参数对应到ActionForm中,进行form验证。如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionFoward。   ActionFoward是对mapping中一个foward的包装,对应于一个url   ActionForm使用了ViewHelper模式,是对HTML中form的一个封装。其中包含有validate方法,用于验证form数据的有效性。ActionForm是一个符合JavaBean规范的类,所有的属性都应满足get和set对应。对于一些复杂的系统,还可以采用DynaActionForm来构造动态的Form,即通过预制参数来生成Form。这样可以更灵活的扩展程序。   ActionErrors是对错误信息的包装,一旦在执行action或者form.validate中出现异常,即可产生一个ActionError并最终加入到ActionErrors。在Form验证的过程中,如果有Error发生,则会将页面重新导向至输入页,并提示错误。   Action是用于执行业务逻辑的RequsestHandler。每个Action都只建立一个instance。Action不是线程安全的,所以不应该在Action中访问特定资源。一般来说,应改使用 Business Delegate 模式来对Business tier进行访问以解除耦合