Struts2_中文API_第1页
Struts2_中文API_第2页
Struts2_中文API_第3页
Struts2_中文API_第4页
Struts2_中文API_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、struts in action 中文版2. 深入 struts 架构本章内容介绍 mvc和 model 2 应用框架理解 struts 原理 使用 struts 控制流 讨论struts 的优缺点translated by: eric liu(铁手) : http:/ 第 30 页struts in action 中文版a common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools

2、. douglas adams, mostly harmless 2.1. talking the talk 本 章深入探讨 struts 框架, 以及它能给你的应用开发所带来的诸多好处. 我们相信, 一旦 你也能 随便谈谈 web 架构和设计 , 你就可以很好的在你的应用中使用 struts. 为了能对 struts 架构有个充分的全面印象, 我们将总体介绍struts 的控制流和它处理请求响应事件循环的方式. 只有彻底理解这个处理原理才能最好的在应用中使用这个框架. 选择一个 web 应用框架不应该是个漫不经心的决定 . 很多人都可以使用这本书 , 特别是用这章的内容 , 来评价 stru

3、ts 是否适合它们的项目 . 因此, 我们在这章的最后部分将有一个关于 struts 优缺点的客观评价 , 并阐明其总体性能 . struts 设计来针对专业开发人员. 为做出正确的决策 , 专业人员应该知晓工具的能力和限制. 2.2. 为什么我们需要 struts 今 天的 web 应用基本上都是代表共同理念的关键组件. 通常, 开发团队需要在有限的时间里创建应用 , 然后它们不得不正确的构建, 并能持续构建它 . java web 开发人员已经有一些工具可用来建立表现层, 比如 javaserver pages 和velocity 模板. 也有一些机制来处理数据库如 jdbc 和 ente

4、rprise javabean (ejb). 但我们用什么来将它们集合在一起 ? 我们已经有了型材和砖墙还缺什么呢 ? 2.2.1. 退一进三在上世纪 80 年代, 当 gui 被发明时 , 软件架构认为 , 应用具有 3 个主要部件 : 管理数据的部件 , 创建屏幕和报表的部件 , 以及处理用户交互和子系统交互的部件ooram. 在 90 年代早期 ,objectworks/smalltalk 编程环境将这个三角结构引入为一个开发框架. 按 smalltalk 80 的说法, 数据系统称为模型 model,表现系统称为视图 view, 而交互系统称 为 控 制 器 controller .

5、许 多 现代 开 发 环 境 , 包 括 java 的 swing, 都 使 用 model/view/controller (mvc) 架构作为它们的基础架构. translated by: eric liu(铁手) : http:/ 第 31 页struts in action 中文版图 2-1 mvc 架构java web 开发者已经有很多有用的工具, 比如 jdbc 和 jsp, 作为 model 和view 的手 段, 但作为控制器的工具和组件在哪? 2.2.2. 进入 struts struts 的核心是一个 mvc 风格的控制器 . struts 控制器搭起了 model 和vi

6、ew 之间的桥梁 . 框架也包括开发人员想用来开发可伸缩的, 先进的应用系统的其他组件 .struts 是一个 隐 藏支柱 的集合 , 帮助开发人员将分散的材料, 如数据库和页面 , 结合成一个整体的应用系统. 2.2.3. struts控制器组件struts 控制器组件是一个可编程的组件集, 允许开发人员定义它们的应用如何准确地和用户进行交互 . 这些组件在逻辑名称后面隐藏了令人讨厌的, 繁琐的实现细节 . 开发人员可以一次性编写这些实现细节, 然后转头考虑它们的应用应该做什么 , 而不是考虑应用应该如何做. 用户通过超链接和 html form 与web 应用程序进行交互 . 超链接引导页

7、面显示数据和其他内容 , 如文本和图像 .表单通常通过一些定制动作向应用提交数据. 图 2-2 主要 struts 组件如图 5 中所示 , struts 提供了开发人员可用来定义超链接, 表单, 和定制动作这些交互的相关组件 . 我们已经使用这些组件在第 1 章创建了一个入门程序 .第 3 章, 我们还要用它们来创建另一个程序 . 然后, 在第 4 章, 我们将讨论这些组件的详细配置 . 随后的章节 , 将详 细讨论如何将每个组件以及如何用在你的程序之中 . 在第 4 章, 我们将展示如何在运行的程序上下文中使用这些组件. 但是, 因为这一章是架构性的总体介绍, 所以我们继续介绍 strut

8、s 的主要部件. 注struts 组件是通过一个 xml 文件进行配置的 . 实践中 , 配置项是 struts 框架的有机组成部分 . 为了将它们糅合在一起 , 我们在讲述它们的时候 , 会展示每个组件第 32 页translated by: eric liu(铁手) : http:/ struts in action 中文版的 xml配置项 . 超链接对 应用开发人员来说 , 超链接是指向应用中某些资源的路径. 这些资源可能是web 页面, 或者是定制动作 . 超链接中也可以包含特殊的参数. 在 struts 中, 开发人员可以将超链接定义为一个 actionforward. 这些对象都有

9、个逻辑名称和一个 path 属性. 这使得开发人员可以设置 path, 然后通过名称来引用actionforward.actionforward 通常在一个 xml 文件中定义 , 这个配置文件在struts 启动时载入 . struts 使用 xml 定义来创建 struts 配置, 包括一个actionforward 的列表. 可用来创建到欢迎页面链接的 actionforward 对象的xml 元素看起来可能像 : 这个元素事实上是创建了一个 actionforward javabean , name 属性设置为welcome, 其 path 属性设置为 /pages/index.jsp

10、. jsp 页面和其它组件就可以引用这里定义的 welcome 转发.struts 框架将查找 welcome actionforward bean 并获取其 path 属性以完成这个超链接 . 这样开发人员可以改变链接的目标而不用改变所有引用该链接的相关组件. 在很多 web 应用中 , 象这样的细节被硬编 码到 jsp 或 java code 中, 使维护变得困难并且容易发生错误. 在struts 应用中 , 这些细 节可以通过应用配置来改变, 而不用触及到具体的页面和 java 类. html 表单web 协议, 即 http 和 html,提供了一个从表单中提交数据的机制, 但却把数据

11、的接 收作为一个难题留给了开发人员. 为此,struts 框架提供了 actionform 类.actionform 设计来就是处理来自 html 表单的输入 : 校验输入 , 重新显示表单以供用户进行修订 ( 如 果需要 ), 以及伴随着相应的提示和错误信息.actionform 其实是具有一些用来来管理校验和修订循环的标准方法的javabean. struts 自动匹配 javabean 属性和 html 表单控件的属性 . 开发者只需定义 actionform 类, 余下的就交给 struts . 例如, 这个类将自动用 html 表单中同名的属性来组装 username 域: publ

12、ic final class logonform extends actionform private string username = null; public string getusername() return (this.username); public void setusername(string username) this.username = username; 其 它 属 性 也会 根 据 表 单中 的 每 个 输入 域 被 自 动加 入 . 这 使得 其 它 组 件可 以 从 标 准的translated by: eric liu(铁手) : http:/ 第 33

13、 页struts in action 中文版javabean 取得它们想要的属性 . 所以, 完全不需要对 http 请求进行详细解析 . actionform 是 按 通 常 的 javabean 类 创 建 的 . struts 配 置 通 过一 系 列 描 述 符 引 用 actionform 类: 和 元素. 元素是框架用来识别和实例化 actionform 对象的描述符 : struts 配置中要列出它使用的 actionform bean 的清单 , 并给每个 bean 一个在应用中被引用时的逻辑名 (name 属性). 1.0 和 1.1 struts 1.1 中,actionf

14、orm 可以使用 map (java.util.map)来存储属性名 , 而不是一个个单独定义它们 . 一种新的 javabean,dynabean,也可以在 struts 1.1和后来的版本中使用 . 你可以使用 xml 元素来配置 dynaactionform 的属性 . 这使你可以使用 struts配置文件来定义actionform. 定制动作html 表单使用 action 参数来告诉浏览器将数据送到何处.struts 框架提供相应的 action 类来接收数据 . 框架会自动创建 , 组装, 校验和最后处理 action 对象所对应的 actionform. 这样, action 就

15、可以直接从 actionform bean 取得它需要的数据 . 比如下例 : public final class logonaction extends action public actionforward perform(actionmapping mapping, actionform form, httpservletrequest request, httpservletresponse response) throws ioexception, servletexception myform myform = (myform) form; / . return mapping.

16、findforward(continue); action 根据返回到控制器的actionforward 对象作出控制流的决定 . 这允许 action 选择 一个逻辑名称 , 比如 continue 或者 cancel,而不是具体的系统路径 . 为保证可扩展性 , 控制器也传递当前的请求和响应对象. 实际上 , action 可以做所有 java servlet 可以做的事情 . 1.0 vs 1.1 在 struts 1.1 中, 新的 execute 方法应该是首选 , 而不是我们例子中的 perform方法.perform 已经不被推荐 , 但为保持向后兼容 , 予以支持 . exec

17、ute 方法体允许更好的例外处理 . 新的 exceptionhandler 在第 9 章第 34 页translated by: eric liu(铁手) : http:/ struts in action 中文版讲 述. 关于 action 对象的详细信息 , 见第 8 章. 除了 actionforward, actionform, 和 action 对象,struts 控制器层还提供了几个特殊的组件 , 包括actionmapping 和 actionservlet. struts 也提供在控制器层的应用程序的本地化. actionmapping 在一个 web 应用中, 每个资源都必

18、须通过 uri 来进行引用 . 资源包括 html 页面,jsp 页面, 和定制动作 . 为了给定制动作一个 uri, 或者说路径 ,struts 框架提供了一个 actionmapping 对象. 象 actionforward 和 actionform 一样, actionmapping 通常也 在 xml 配置文件中定义 : 这也允许将同一个 action 对象定义为不同的actionmapping. 例如, 其中一个映射要求校验而另一个映射不要求校验. actionservlet struts actionservlet 完全在幕后工作 , 它将其他组件绑定在一起 . 虽然它也可以子类

19、化 , 但 大多数 struts 1.0 的开发人员将 actionservlet 处理为一个黑盒: 他们只是配置它 , 然后让 它自己工作 . 在 struts 1.1 中, actionservlet 是比较易于扩展的 . 9 章将讨论 struts 1.1 actionservlet 第 新的扩展点和配置选项 . 本地化web 应用也通过各种提示和信息与用户进行交互.struts 组件均有内建的本地化特征 , 以 便 struts 应用可以为国际化用户使用. 我们在此书中贯穿使用本地化特征 . 本地化的详细讨论见第 13 章. 2.2.4. 用 struts开发 web应用要 使用 st

20、ruts 开发 web 应用, 开发人员将需要的超链接定义为actionforward, html 表 单定义为 actionform, 定制的服务器端动作定义为action 类. 需要访问 jdbc 和 ejb 的开发人员也可通过 action 对象进行他们的工作 . 这样, 表现层不 需要和 model 层打交道 .struts action 对象将收集view 需要的数据 , 然后将它们转发到表现页面 .struts 提供 jsp 标记库 , 它们将和 jsp 页面一起使用 , 简化 html 表单和访问 action 要转发的其它数据 .其它表现机制 , 比如 velocity templates, 也可用来访问 struts 框架, 以创建动态的 web 页面. 这种处理流程入下图 : translated by: eric liu(铁手) : http:/ 第 35 页struts in action 中文版图 2-3 数据回传给视图关于和 struts 中如何使用各种数据系统 , 见第 14 章. 第 10 章和第 11 章学习如何创建 st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论