2目录 433工作流拦截器 …69 6.3.2ge七标签…118 4.3.4其他拦载器… 63.3ugh标签+4…119 4.3.5内建的拦戴器栈 3 6.3.4 bean标签 …120 4.4声明拦截器… …74 6.3.5 action标签… 122 44.1 声明独立的拦栽器和拦器栈74 6.4控制标签… .124 4.4.2将拦裁器映射到动作组件 124 76 6.4.1 iterator标签 4.43设置、覆盖拦戴器参数 77 6.4.2 if和e1se标签 125 4.5构建自定义拦截器 …78 6.5其他标签… .126 4.5.1实现Interceptor接口…78 6.5.1 include标签 4.5.2枸建Authentication 6.5.2 URL标签: -12 Interceptor拦载器 …79 653118m和化ex上标然+… …128 4.6小结 6.5.4 param标签 .129 130 第5章数据转移:OGNL和类型转换 -84 6.6使用STL和其他本地标签: 6.7OGNL表达式语言的基础知识…130 5.1数据转移和类型转换:Wcb应用程序 6.7.1什么是0GNL .130 领域的常见任务 85 Struts2中常用的表达式语言 5.2OGNL和Struts2 672 持性44444t+…3】 5.2.10GN是什么+85 67.3 表达式语言的高级特性…135 522OGNL如何釉入板架 +487 6.8小结 …137 5.3内建的类型转换器 …89 第7章U1组件标签 139 S.31立即可用的类型转换器…89 5.3.2使用OGNL表达式从表单字段 7.1为什么需要U组件标签 …139 名映射到属性 90 72标签、模板和主题 …144 .146 5.4自定义类型转换… …101 7.2.1标签* 444146 5.4.1实现类型转换器……… …102 7.2.2 模板 72.3主题 146 5.4.2在String和Circle之间 转换 4…102 7.3U组件标签 .148 .148 5.4.3 配置框架使用自定义转换器…103 7.3.1 通用属性 7.3.2简单组件… 5.5小结 …106 149 733千集合的组件 .159 第三部分构建视图 —标签和结果 73.4 颜外的组件 …166 第6章构建视图 标签 108 7.4小结“ 61入门 108 第8章结 果 170 8.1动作之后 170 6.l2虚拟对象Va1 ueStack*111 8.11页面上:如何使用自定义结果组 6.2 Struts2标签概要 44113 件构建Struts2Ajax应用程序-l71 6.2.1 Struts2标签API语法 …13 8.1,2实现SON结果类型 …173 6.2.2使用0GNL设置标签属性…115 82常用的结果类型… 4*…180 6.3数据标签… …117 8.2.1 RequestDispatcher. 6.3.I property标签… …17 也叫做dispatcher …180
目 录3 8.2.2 ServletRedirectResult, 10.3.1检查密码强度的自定义 也叫做redirect: …186 验证器 …227 8.2.3 ServletActionRedirectResult, 10.3.2使用自定义数据玲证器…229 也叫微redirectAction-…l88 10.4验证框架的高级主题…230 8.3JSP替代品 …189 10.4.1 在城对象级别验证… …231 8.3.1 VelocityResult, 10.42 使用验证上下文优化验证…233 也叫做velocity 189 10.4.3 验证继承…… 235 8.3.2 Freer narkerResult, 10.4.4 验证短路效应 …236 也叫做freemarker .191 10.4.5使用注解声明险证…237 8.4全局结果 -192 10.5小结 …239 85小结4444…193 第11章理解国际化 240 第四部分完善应用程序 111 Struts2框架和Java i18n …241 第9章集成Spring和Hibemate/JPA. 196 11.1. 使用Resour ceBundle 9.】为什么在Struts2中使用Spring… % L0ca1e取得本地化文本…241 11.1.2 9.1.1依锁注入能做些什么… 4*…197 Struts2如何解决本地Java 91.2 Spring如何管理对象和注入 对i18m支持的问题 …243 11.2 Struts2i18n示例 依锁 …199 9.1.3使用接口隐藏实现…200 11.2.1 Struts2i18n快速展示…244 9.2将Spring添加到Struts2 …202 11.2.2 兼后一览 …246 9.2.】让Spring管理动作、拦戴器和 113 Struts2i18n详情… …247 结果的创建… …203 1l.3.】Snus2默认的TextProvider Re- 92.2使用自动连线将依赖注入到 sourceBund.1e搜索算法…24 】132从向中取得消息文本 w251】 动作,拦戴器和结果… **+205 9.3为什么在Struts2中使用PA …207 11.3.3 使用118n标签指定包…254 9.3.1 使用RA和Hibemate建立 11.3.4 参数化本地化文本 …25 】】3气路气火日朝知好字. *256 项目44…208 …257 9.3.2基于Spring管理PA编写 11.4 覆盖框架默认的地域决定 代码 …212 11.4.1 让用户交互地设置地域… …257 9.4小结… 11.4.2 以编码的方式设置地域…259 4+44+216 第10章探索验证框架 -217 11.5小结 …260 第五部分高级主题和最佳实践 10.1熟悉数据验证框架 10.11验证框架的架构 ,264 …218 第12章使用插件扩展Struts2 10.12 Struts2工作流中的验证柜架…219 12.1插件概要 ,264 10.2将动作关联到验证框架 22 12.2 常用插件 …265 10.2.l使用ActionClass-validations.xml 12.2.1 SiteMesh. …266 声明验证元数据 .223 122.2 Tiles …267 10.2.2研究内建的验证器 …226 12.2.3 JFreeChart “260 10.3编写自定义验证器… …227 12.3内部组件系统… …271
4目 录 12.3.1Bean 271 142逐步转换 296 12.32常量 …272 14.2.1 逐步实现 ·296 12.33 注入· …272 14.2.2动作映射… 12.3.4 Struts内部扩展点… .273 142.3 动作在哪里遇到表单 ,300 12,4编写浏览路径插件 …274 14.2.4 转换页面 -301 12.5小结… 595*4+45444+278 14.2.5 不说益语4 …303 第13章最佳实践 …279 142.6数据警察 …304 13.】建立开发环境 279 14.2.7 两者能够和相处吗…306 13.1.1建立DE -280 14.3小结 …307 13.12重浙加战济源 280 第15章高级主题 308 13.2 对动作进行单元测试 281 15.】高级动作的应用…308 13.2.1将1oC用于测试的优势… .281 152动杰方法调用: .310 13.2.2Unit与测试 282 152.1 通配符方法的选择 310 13.23测试validation..xml文件 …284 1522动态工作流 4+*4*312 13.3最大化重用 .284 15.3使用令牌防止表单重复提交…313 133.1使用component标签 15.3.1 使用<s:token/.>表单标签…313 组件化 …285 15.32今令牌拦截器规则的例外…314 1332 重用模板化的标签 .2只6 15.4自动显示等特页面…3引6 13.3.3连接U标签和对象 287 15.5 完成CRUD操作的一个动作 *…317 13.4高级UI标签的使用… -288 15.5.1CRUD…317 13.4.1覆盖既有摸板 288 15.5.2拦截器和接口…318 13.4.2 编写自定义模板 288 15.5.3 连接各部分 ·323 13.43编写自定义主题… +289 15.6 Tiles和Struts2. ,325 13.5小结 289 15.6.1 关注网站的界面外观 -325 第14章从经典Stus迁移 ·290 15.6,2配置相互关系 326 1563使用声明性架的 14.1翻译经典Struts的知识 .290 +329 14.1.1动作… 290 15.6.4 使用Tiles控制器准备网页 14.1.2 ActionForm怎么了 内客 *…331 ·292 14.1.3切换标签库… 15.7小结… …332 ...393 14.1.4拆分消息资源…294
Part l 第一部分 Strut2:一个全新的框架 Stut2确实是一个全新的框架。我们把它当做第二代Web应用程序框架。除了新框架中应该 包含的所有最先进的特性外,它还引人了许多开发人员并不是很熟悉的架构方面的优化。这就 意味着我们得花费一定的时间为本书的读者适当介绍这个新框架。这是本书前两章的目的。 第1章是个宏观概述。在介绍框架之前,先勾画出如Suts2这样的Java Web应用程序框架存 在的技术背景。这些信息对于某些人来说也许是老生常谈,而对于新手来说又还不够。本书的 目的是为将要开发Suts2应用程序的人员快速地介绍一下应该熟悉的技术。本书会快速地浏览 背景材料,再从宏观上完整介绍Struts2的新架构。这个设计优良的架构无疑是Struts2框架最具 标志性的特征之 抽象的预备章节一结束,第2章就带你步入实战的正轨,把高高在上的概念带到Hello World 示例应用程序中。通过这个程序,你能尽早亲手开发一个可以运行的Struts2Wb应用程序。如 果你迫不及待地想了解第2章的内容,就跳过第1章吧! 本部分内容 中第1章Struts2:现代Web框架 第2章 初识Struts2
第1章 Struts2:现代Web框架 本章内容 口构建web应用程疗 口使用web框架 口探索Struts2框架 口介绍拦截器(interceptor)和ValueStack 现代wb应用程序身处复杂的技术背景之下。你过去读过的书很可能只是关于单一主题,例 如Java语言,或者某个特定的API或类库。而本书的主题是Struts2,它是Java EE平台上一个功能 齐全的Wb应用程序框架。因此,本书必须考虑Java EE环境中的各种技术。 为了应对这些复杂的技术,本书首先讲解一些Suts2依赖的最重要技术。Struts2做了很多明 显的改进来推动通过约定替代配置,并且让很多日常任务自动化。在此之前,这些任务需要开发 人员付出辛勤的汗水才能完成。然而我们认为功效的真正提升来源于对底层技术[特别是那些被 脚手架(scaffold)所湮没了的技术]的深入理解。所以,本章的前半部分概要讲述Struts2所处 的技术环境。如果你理解这些内容,可以完全跳过这些内容。 在快速地介绍完这些技术之后,我们开始从宏观上审视Struts2。我们将介绍MVC (Model--View-Controller)模式如何与Struts2架构结合起来。之后,我们会更详细地介绍Struts2 框架如何处理请求。在本章结束之后,你就会完全具备创建HelloWorld应用程序的能力。 让我们开始吧! 1.1Web应用程序:快速学习 本节概要地介绍Wb应用程序的技术背景,涉及支撑Wb应用程序的各种技术,并且快速介 绍所有Wb应用程序在处理请求时必须完成的日常任务。如果你非常熟悉这些内容,可以直接跳 到1.3节。但是,快速地浏览一下这些内容,可以了解我们作为本书的作者,如何看待Wb应用程 序领域。 1.1.1构建Web应用程序 尽管现在很多Java开发人员大都从事Wcb应用程序开发,但是重温一下这个领域的基础还是