Struts简介
时间:2008-07-16 来源:zyme007
一、为什么要使用Struts
Struts是一个WEB开发框架。WEB从一开始的静态HTML开发,到后来的动态页面。从繁琐的、代码及其混乱的Model1,逐步到MVC模式。在技术上和结构上都发生了极大的变化。MVC模式结构清晰,现今已被大量运用。Struts 通过提供一个控制器Servlet 实现了Sun 的 Model 2 架构,这个控制器可以用来管理JSP 页面和其他表现设备之间的流程。Struts 通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现 MVC层 模式。同时通过xml配置文件实现几个层次间的关系,大大简化了开发人员的工作量。
二、Struts是怎么工作的
我们用一个图示来描述Struts的工作情况
500)this.width=500;" border=0> 上图以UML以次序图的方式展示了Struts 请求-响应流程。我们来按这个请求-响应流程走一遍。
1、客户请求匹配Action URI 样式的路径
2、容器将请求传递给ActionServlet.
3、如果这个是模块化应用,ActionServlet 选择响应的模块。
4、ActionServlet 查询路径的映射。(来自于配置文件)
5、如果映射标明了一个form bean,ActionServlet 看是否已经有一个实例,或者创建一个新的实例。如果已经有一个form bean,ActionServlet 重设它,并根据HTTP 请求重新组装它。
6、如果 mapping 的 validate 属性设置为 true, 它将调用 form bean 的validate 方法
7、如果失败,Servlet 将控制转发到input 属性标明的路径,控制流终止。
8、如果mapping 标明一个Action 类型,如果它已经存在或已经实例化,它将被重用
9、Action 的perform 或 execute 方法被调用,并传递一个实例化的form bean(或者 null)。
10、Action 组装form bean, 调用业务对象,以及其他需要做的事情。
11、Action 返回一个ActionForward 给ActionServlet
12、如果ActionForward 指向另一个 Action URI,重新开始; 否则,显示页面或者其他资源,流程结束。通常,结果是一个JSP 页面,或者Jasper, 或其它类似技术 (非Struts)渲染的页面。
13、如果JSP 中使用了Struts HTML 标记, 并且在请求中看到正确的ActionForm,他们会从ActionForm 中组装HTML 控件。否则, <html:form> 标记将创建一个。从Struts 1.1 开始, 如果form 标记自行创建一个ActionForm ,它将调用ActionForm 的Reset 方法。如果你只是想创建一个空白的表单,你可以使用标准的ForwardAction来通过Action 传递控制,然后离开页面
Struts是一个WEB开发框架。WEB从一开始的静态HTML开发,到后来的动态页面。从繁琐的、代码及其混乱的Model1,逐步到MVC模式。在技术上和结构上都发生了极大的变化。MVC模式结构清晰,现今已被大量运用。Struts 通过提供一个控制器Servlet 实现了Sun 的 Model 2 架构,这个控制器可以用来管理JSP 页面和其他表现设备之间的流程。Struts 通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现 MVC层 模式。同时通过xml配置文件实现几个层次间的关系,大大简化了开发人员的工作量。
二、Struts是怎么工作的
我们用一个图示来描述Struts的工作情况
500)this.width=500;" border=0> 上图以UML以次序图的方式展示了Struts 请求-响应流程。我们来按这个请求-响应流程走一遍。
1、客户请求匹配Action URI 样式的路径
2、容器将请求传递给ActionServlet.
3、如果这个是模块化应用,ActionServlet 选择响应的模块。
4、ActionServlet 查询路径的映射。(来自于配置文件)
5、如果映射标明了一个form bean,ActionServlet 看是否已经有一个实例,或者创建一个新的实例。如果已经有一个form bean,ActionServlet 重设它,并根据HTTP 请求重新组装它。
6、如果 mapping 的 validate 属性设置为 true, 它将调用 form bean 的validate 方法
7、如果失败,Servlet 将控制转发到input 属性标明的路径,控制流终止。
8、如果mapping 标明一个Action 类型,如果它已经存在或已经实例化,它将被重用
9、Action 的perform 或 execute 方法被调用,并传递一个实例化的form bean(或者 null)。
10、Action 组装form bean, 调用业务对象,以及其他需要做的事情。
11、Action 返回一个ActionForward 给ActionServlet
12、如果ActionForward 指向另一个 Action URI,重新开始; 否则,显示页面或者其他资源,流程结束。通常,结果是一个JSP 页面,或者Jasper, 或其它类似技术 (非Struts)渲染的页面。
13、如果JSP 中使用了Struts HTML 标记, 并且在请求中看到正确的ActionForm,他们会从ActionForm 中组装HTML 控件。否则, <html:form> 标记将创建一个。从Struts 1.1 开始, 如果form 标记自行创建一个ActionForm ,它将调用ActionForm 的Reset 方法。如果你只是想创建一个空白的表单,你可以使用标准的ForwardAction来通过Action 传递控制,然后离开页面
相关阅读 更多 +