Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523866
  • 博文数量: 151
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1405
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 14:32
文章分类

全部博文(151)

文章存档

2011年(1)

2010年(23)

2009年(1)

2008年(126)

我的朋友

分类: 系统运维

2008-07-16 11:09:34

一、为什么要使用Struts
    Struts是一个WEB开发框架。WEB从一开始的静态HTML开发,到后来的动态页面。从繁琐的、代码及其混乱的Model1,逐步到MVC模式。在技术上和结构上都发生了极大的变化。MVC模式结构清晰,现今已被大量运用。Struts 通过提供一个控制器Servlet 实现了Sun 的 Model 2 架构,这个控制器可以用来管理JSP 页面和其他表现设备之间的流程。Struts 通过使用ActionForward和ActionMapping来保证表现层之外的控制流决策来实现 MVC层 模式。同时通过xml配置文件实现几个层次间的关系,大大简化了开发人员的工作量。

二、Struts是怎么工作的
    我们用一个图示来描述Struts的工作情况
   
  上图以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 控件。否则, 标记将创建一个。从Struts 1.1 开始, 如果form 标记自行创建一个ActionForm ,它将调用ActionForm 的Reset 方法。如果你只是想创建一个空白的表单,你可以使用标准的ForwardAction来通过Action 传递控制,然后离开页面
 



 
阅读(3862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~