第一部分 Struts基础 第1章 引言 2 1.1 什么是Web应用程序 2 1.2 Struts可以做什么 3 1.3 关于读者 4 1.4 如何阅读此书 4 1.5 有用的链接 4 第2章 复习servlet和JSP 6 2.1 实验2:安装Tomcat 6 2.2 servlet容器基础 8 2.3 重要的servlet类 10 2.4 JSP 10 2.4.1 解析Hello.jsp 12 2.4.2 最后的思考 13 2.5 有用的链接 13 2.6 小结 13 第3章 理解作用域 14 3.1 实验3:作用域测验 15 3.2 会话和请求作用域内幕 17 3.3 小结 17 第4章 定制标签 18 4.1 定制标签基础 18 4.2 如何处理定制标签 19 4.3 Java标签处理器类 20 4.4 辅助类 22 4.5 TLD文件 23 4.6 实验4:温度转换标签 25 4.6.1 步骤1:准备开发环境和脚本 26 4.6.2 步骤2:编写Java标签处理器 26 4.6.3 步骤3:编写标签库描述文件 26 4.6.4 步骤4:修改web.xml 27 4.6.5 步骤5:编写JSP 27 4.6.6 步骤6:部署和测试 27 4.7 专业的Java工具 28 4.8 有用的链接 28 4.9 小结 28 第5章 MVC设计模式 29 5.1 注册Web应用 31 5.1.1 需求1 31 5.1.2 需求2 32 5.1.3 需求3 32 5.1.4 需求4 32 5.1.5 需求5 34 5.2 实验5:MVC测验 35 5.3 从哪里入手 36 5.4 Struts和MVC 37 5.5 Struts请求的生命周期 38 5.6 针对模型的框架 39 5.7 有用的链接 40 5.8 小结 40 第6章 简单验证 41 6.1 处理简单验证 41 6.2 解剖ActionForm 41 6.3 使用ActionErrors 45 6.4 实验6:LILLDEP的ContactForm 48 6.4.1 步骤1:准备开发环境和脚本 49 6.4.2 步骤2:实现ContactForm的获取器和设置器 49 6.4.3 步骤3:实现validate() 50 6.4.4 步骤4:实现reset() 50 6.5 现在Struts已经做了什么 50 6.6 小结 51 第7章 处理业务逻辑 52 7.1 Action简介 52 7.2 Action的无状态性 53 7.3 子类化Action 54 7.4 注册Web应用程序中的业务逻辑 54 7.5 复杂验证 57 7.6 数据变换 58 7.7 导航 59 7.8 实验7:为LILLDEP实现ContactAction 60 7.9 小结 61 第8章 基本Struts标签 62 8.1 页面处理生命周期 62 8.2 “注册Web应用程序”的视图组件 64 8.2.1 声明和安装HTML和Bean标签库 66 8.2.2 显示静态文本 66 8.2.3 表单和表单处理器 67 8.2.4 数据输入标签 68 8.2.5 显示错误 69 8.3 HTML和Bean标签库概要 70 8.4 实验8:为LILLDEP创建Contact输入页面 71 8.5 有用的链接 72 8.6 小结 72 第9章 配置Struts 73 9.1 struts-config.xml的结构 73 9.2 配置注册Web应用程序 74 9.3 声明表单bean 75 9.4 声明全局异常 76 9.5 声明全局转发 77 9.6 声明表单处理器 77 9.7 控制器声明 79 9.8 消息资源 80 9.9 声明插件 80 9.10 实验9a:配置LILLDEP 81 9.11 代码重用 82 9.12 实验9b:MNC页面 82 9.13 小结 83 第10章 其他标签 84 10.1 最佳实践 85 10.2 剩下的2+1个Struts标签库 85 10.3 Logic标签库 85 10.3.1 迭代 86 10.3.2 简单的、嵌套的、索引的、映射的属性 88 10.3.3 条件处理 89 10.3.4 流控制 90 10.4 Nested标签库 91 10.5 JSTL和Struts 93 10.5.1 表达语言(EL) 95 10.5.2 使用EL 95 10.5.3 <c:out>标签 96 10.5.4 <c:forEach>标签 97 10.5.5 <c:if>和<c:choose>...<c:when>标签 98 10.6 StrutsEL扩展 99 10.7 实验10a:LILLDEP的全部列表页面 99 10.7.1 步骤1:完成ListingAction 100 10.7.2 步骤2:完成listing.jsp 100 10.7.3 步骤3:修改web.xml 100 10.7.4 步骤4:修改struts-config.xml 100 10.8 实验10b:简化ContactForm 101 10.8.1 步骤1:修改ContactForm 101 10.8.2 步骤2:修改full.jsp和mnc.jsp 101 10.9 实验10c:使用JSTL 101 10.9.1 步骤1:安装JSTL和Struts EL标签库 101 10.9.2 步骤2:修改web.xml 101 10.9.3 步骤3:修改listing.jsp 102 10.10 有用的链接 102 10.11 小结 102 第11章 上传文件 103 11.1 一次上传固定数量的文件 104 11.2 上传任意数量的文件 107 11.3 Lab 11:导入数据到LILLDEP中 114 11.3.1 步骤1:完成ImportForm 114 11.3.2 步骤2:完成import.jsp 114 11.3.3 步骤3:完成ImportAction 114 11.3.4 步骤4:修改struts-config.xml 115 11.3.5 步骤5:编译、重新部署并测试应用 115 11.4 有用的链接 115 11.5 小结 115 第12章 国际化 116 12.1 字符编码,Unicode和UTF-8 116 12.2 场所(Locale) 118 12.3 处理输入 119 12.4 本地化验证 120 12.5 本地化输出 122 12.5.1 处理翻译后的Application.properties文件 123 12.5.2 从浏览器中选择一个场所 123 12.5.3 通过一个链接切换场所 124 12.5.4 用LocaleAction来切换场所 125 12.6 实验12:针对马来西亚语市场的LILLDEP 125 12.7 有用的链接 126 12.8 小结 126 第13章 复习实验:在LILLDEP中编辑联系人信息 127 第二部分 高级Struts 第14章 Tiles 130 14.1 安装Tiles 131 14.2 用Tiles 进行布局 132 14.3 Tiles 组件 137 14.4 实例:一个“登录”Tiles组件 140 14.5 获取外部表单数据 153 14.6 实验14:查找功能 154 14.6.1 步骤1:设置Tiles 154 14.6.2 步骤2:编写控制器 154 14.6.3 步骤3:设置Tiles ActionMapping 155 14.6.4 步骤4:修改ContactAction 156 14.6.5 步骤5:编写Tiles JSP 156 14.6.6 步骤6:编写Tiles定义 156 14.6.7 步骤7:放入Find Tile 156 14.6.8 步骤8:部署和测试 157 14.7 小结 157 第15章 Validator框架 158 15.1 声明验证器插件 159 15.2 验证器DTD基础 160 15.3 使用Validator框架 161 15.3.1 例子:验证 RegistrationForm 161 15.3.2 验证嵌套和索引属性 165 15.3.3 使用常数 166 15.3.4 客户端验证 167 15.4 标准验证器 167 15.4.1 使用validwhen 168 15.4.2 对索引的字段使用validwhen 169 15.5 添加定制验证 170 15.5.1 实现validate() 171 15.5.2 扩展Validator框架 171 15.5.3 实现Java处理器类 172 15.6 迁移遗留代码 176 15.7 本地化验证 177 15.8 实验15:在LILLDEP中使用Validator框架 177 15.9 有用的链接 178 15.10 小结 178 第16章 动态表单 179 16.1 声明动态表单 179 16.1.1 声明一个简单属性 181 16.1.2 声明索引属性 181 16.1.3 声明一个映射属性 182 16.1.4 声明嵌套属性 182 16.2 存取动态属性 183 16.3 动态表单的缺点 183 16.4 验证动态表单 184 16.5 使用动态表单的注册Web应用程序 185 16.6 LazyValidatorForm(Struts 1.2.6+) 189 16.7 BeanValidatorForm(Struts 1.2.6+)的隐藏威力 192 16.8 实验室16:在LILLDEP中删除选定的联系人 192 16.8.1 步骤1:声明SelectionForm表单bean 193 16.8.2 步骤2:修改listing.jsp 193 16.8.3 步骤3:创建删除联系人的Action 193 16.9 有用的链接 193 16.10 小结 194 第17章 Struts锦囊 195 17.1 PropertyUtils 195 17.1.1 使用PropertyUtils 196 17.1.2 小结 197 17.2 DownloadAction(Struts 1.2.6+) 198 17.3 LocaleAction 200 17.4 IncludeAction 和ForwardAction 202 17.5 LookupDispatchAction 203 17.6 DispatchAction 208 17.7 MappingDispatchAction 209 17.8 使用全局转发 212 17.9 日志 212 17.10 使用通配符 214 17.11 分解struts-config.xml 216 17.12 有用的链接 219 17.13 小结 219 第18章 复习实验:集合功能 220 18.1 实验18a:主集合页面 221 18.2 实验18b:新的集合页面 221 18.3 实验18c:集合列表页面 223 18.4 实验18d:删除选择的联系人 224 18.5 实验18e:添加选择的联系人 225 18.6 实验18f:前后导航 226 18.7 小结 227 第19章 开发插件 228 19.1 手头的任务 228 19.2 实现路线图 231 19.3 Struts如何处理表单bean 231 19.4 插件的解剖 234 19.5 实现DynaFormsPlugIn 235 19.6 用Apache Digester读取XML 237 19.7 实现DynaFormsLoaderFactory 240 19.8 DefaultDynaFormsLoader 243 19.9 实验19:测试DynaForms插件的使用 251 19.10 增加功能的实验:处理<set-property> 251 19.11 有用的链接 253 19.12 小结 254 第20章 JSF和Struts Shale 255 20.1 JSF 概览 255 20.2 Shale概览 256 20.3 学习Struts是浪费时间吗 257 20.4 JSF 258 20.4.1 服务器端UI组件 258 20.4.2 请求处理生命周期 260 20.4.3 事件和事件监听器 262 20.4.4 JSF 标签库 266 20.4.5 值绑定和方法绑定 266 20.4.6 导航 267 20.5 示例:注册Web应用程序 268 20.5.1 配置JSF 268 20.5.2 消息资源 269 20.5.3 user后台bean 270 20.5.4 视图 277 20.6 接下来去哪里 280 20.7 实验20:Struts-Faces集成库 281 20.7.1 步骤1:准备开发 281 20.7.2 步骤2:安装JSF、JSTL和Struts-Faces集成库 282 20.7.3 步骤3:编辑web.xml和struts-config.xml 282 20.7.4 步骤4:迁移Struts JSP页面 283 20.7.5 步骤5:迁移<forward>和输入 284 20.7.6 步骤6:使进入点转发到*.faces 285 20.7.7 步骤7:如有必要,修改Action 285 20.7.8 步骤8:添加必要的<managed-bean> 声明 286 20.7.9 小结 286 20.8 Struts Shale预览 286 20.8.1 ViewController 287 20.8.2 对话管理器 291 20.8.3 集成验证器框架 293 20.8.4 JNDI集成 295 20.8.5 通过Clay重用视图 296 20.8.6 服务器端Ajax支持 297 20.8.7 测试框架 297 20.9 JSF、Shale与Struts 297 20.10 有用的链接 299 20.11 小结 300 附录A 模型框架 301 附录B 常用类 314 附录C (图灵网站下载) 附录D (图灵网站下载)
|