Struts 控制流

下图以UML时序图的方式展示了Struts 请求-响应流程

我们来按这个请求-响应流程走一边

n 客户请求匹配Action URI样式的路径 

n 容器将请求传递给ActionServlet.

n 如果这个是模块化应用,ActionServlet选择响应的模块。

n ActionServlet查询路径的映射。

n 如果映射标明了一个form bean,ActionServlet看是否已经有一个实例,或者创建一个新的实例。如果已经有一个form bean,ActionServlet重设它(reset),并根据HTTP请求重新组装它。

n 如果mapping的validate属性设置为true,它将调用form bean的validate方法,如果验证失败,Servlet将控制转发到input属性标明的路径,控制流终止。

n 如果mapping标明一个Action类型,如果它已经存在或已经实例化,它将被重用。 

n 接着Action的perform或execute方法被ActionServlet调用,并传递一个实例化的form bean或者null。

n Action可以组装form bean,调用业务对象,以及其他需要做的事情。 

n Action返回一个ActionForward给ActionServlet。

n 如果ActionForward指向另一个Action URI,重新开始;否则,显示页面或者其他资源,流程结束。通常,结果是一个JSP页面,或者Jasper,或其它类似技术 (非Struts)

n 如果JSP使用Struts HTML标记,并且在请求中看到正确的ActionForm,他们会从ActionForm中组装HTML控件。否则,<html:form>标记将创建一个。从Struts1.1开始,如果form标记自行创建一个ActionForm,它将调用ActionForm的Reset方法。如果你只是想创建一个空白的表单,你可以使用标准的ForwardAction来通过Action传递控制,然后离开页面。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章