内 容简 介本书从基础开始,对Struts 2程序设计相关知识进行了深入细致的讲解。全书共分15章,主要内容包括Struts 2技术介绍和原理、Action的应用、核心技术的应用、Struts 2配置文件的配置、类型转换器、拦截器、OGNL表达式、Struts 2的标签、Struts 2的校验、Struts 2的国际化、Struts 2文件的上传下载等,最后通过留言板项目案例对前面的知识进行了综合运用。本书不仅可以作为普通高等院校的教材,同时也是广大Struts 2爱好者自学的首选用书。前 言Struts 2是Struts的新一代产品,是在Struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。Struts 2目前已经成为Java EE企业开发最实用、使用最广泛的MVC框架,Struts 2框架不仅成熟、稳定,而且具有很好的扩展性,能与大部分Java EE框架整合。所以,Struts 2是从事Java EE开发必备的技术。1. 本书内容本书面向Struts 2的实际应用开发,循序渐进地为读者介绍有关Struts 2开发所涉及的各类知识,内容由浅入深,涵盖Struts 2的主要知识点,并且在介绍过程中,针对每个知识点都有相应的实例。本书通俗易懂,结构安排合理,各章主要内容如下。第1章 主要介绍MVC的设计思想以及对Struts 1和Struts 2的概述和对比,并且介绍Struts 2的下载和安装。第2章 讲解Struts 2框架开发的基本知识和步骤,例如Struts 2框架搭建、Action接口访问、ActionSupport、ActionContext类的使用。第3章 主要介绍有关Struts 2执行的原理和流程,以及Action的驱动模式。第4章 主要学习有关Struts 2中web.xml、struts.xml文件的配置以及Result Types的使用。第5章 主要介绍有关Struts 2其他配置的使用,例如Struts 2中Action相关的标注、验证标注的使用,并介绍struts.properties属性文件和struts-plugin.xml文件的配置。第6章 Struts 2类型转换器的基本概述和Struts 2中内置转换器的使用,并且学习如何实现自定义类型转换器。第7章 学习Struts 2中核心技术拦截器的原理,并了解有关拦截器的配置和使用。第8章 学习表达式语言OGNL的语法基础和使用,例如表达式的定义、常量、如何访问JavaBean中的属性和方法。第9章 Struts 2中标签的使用,主要介绍Struts 2中通用标签、UI标签的应用。第10章 也是对Struts 2中标签的介绍,主要包括对Struts 2中Ajax标签和主题以及模板的介绍。第11章 学习Struts 2中校验器的使用,主要包括对Struts 2中基础校验、服务器端校验、客户端校验以及Ajax校验的讲解。第12章 学习Struts 2框架国际化的应用,主要包括页面内容的国际化、错误信息的国际化、日期和数值的国际化。第13章 主要是Struts 2中综合使用技术的介绍,包括防止表单重复提交、文件上传下载以及部分扩展技术等。第14章 学习Struts 2和其他Java EE技术整合应用,包括Struts 2 + Spring的整合、Struts 2 + Hibernate的整合以及S2SH技术的整合应用。第15章 通过一个留言板项目案例的开发,向读者介绍留言板案例主要模块的开发,有助于读者快速掌握Struts 2开发技术。2. 本书特色(1) 本书在每章后面,增加了上机实训,以便课后加强读者的动手能力。(2) 每章后面提供了习题,帮助读者温习所学的知识。(3) 对于后面的案例,本书提供了完整的源文件。(4) 对于一些细节之处,本书在全书需注意的地方,增加了“注意”内容,以便读者更好地掌握细节。3. 适用读者本书专门为在校学生和零基础的读者量身定制,是普通高等院校Struts 2程序设计课程的首选教材,同时也可作为Struts 2爱好者的自学用书。4. 本书作者本书由天马程序员(TOMO)俱乐部创始人之一孙连伟、天津师范大学副研究员武迪编著,邱加永、熊萧、王学锋、张静等参与编写。编者力求表述规范、措辞严谨、通俗易懂。但限于自身水平,疏漏之处在所难免,读者在阅读的过程中遇到什么问题或者有好的建议或意见,欢迎随时与我们联系。为便于相关问题的讨论,读者可以加入QQ群:259798954,或发送邮件到24308768@qq.com与作者交流。编 者
第1章 Struts 2 概述1.1 MVC思想概述1.1.1 传统的Model 1和Model 21.1.2 MVC思想及特点1.1.3 常见MVC技术1.2 Struts 1概述1.3 Struts 2概述1.3.1 Struts 2的优势1.3.2 Struts 2的体系结构1.3.3 Struts 2的配置文件1.3.4 Struts 2的标签库1.3.5 Struts 2的控制器1.4 Struts 2的下载和安装1.5 上机实训1.6 本章习题第2章 Struts 2 入门2.1 HelloWorld应用介绍2.2 创建Struts 2的Web应用2.2.1 创建Web应用2.2.2 用户请求页面2.2.3 控制器实现2.2.4 配置Action2.2.5 完成应用2.3 Struts 2的Action2.3.1 实现Action接口2.3.2 Action访问ActionContext2.3.3 继承ActionSupport类2.4 上机实训2.5 本章习题第3章 Struts 2的核心技术3.1 Struts 2的执行流程和原理3.2 Action的驱动模式3.2.1 属性驱动模式3.2.2 模型驱动模式3.3 上机实训3.4 本章习题第4章 Struts 2的配置方式(1)4.1 web.xml文件的配置4.2 struts.xml文件的配置4.2.1 bean的配置4.2.2 package的配置4.2.3 namespace的配置4.2.4 constant的配置4.2.5 interceptor的配置4.2.6 include的配置4.2.7 action的配置4.2.8 result的配置4.2.9 exception的配置4.3 Result Types的配置4.3.1 Chain Result的配置4.3.2 Dispatcher Result的配置4.3.3 FreeMarker Result的配置4.3.4 HttpHeader Result的配置4.3.5 Redirect Result的配置4.3.6 Stream Result的配置4.3.7 Velocity Result的配置4.3.8 Xslt Result的配置4.3.9 PlainText Result的配置4.3.10 JSON Result的配置4.3.11 全局结果4.3.12 动态结果映射4.4 上机实训4.5 本章习题第5章 Struts 2的配置方式(2)5.1 Annotations的配置5.1.1 Namespace的配置5.1.2 ParentPackage的配置5.1.3 Action的配置5.1.4 Actions的配置5.1.5 InterceptorRefs的配置5.1.6 Result的配置5.1.7 Results的配置5.1.8 ResultPath的配置5.1.9 ExceptionMapping的配置5.1.10 ExceptionMappings的配置5.2 Validation Annotations的配置5.2.1 ConversionErrorFieldValidator
的配置5.2.2 DateRangeFieldValidator
的配置5.2.3 DoubleRangeFieldValidator
的配置5.2.4 EmailValidator的配置5.2.5 ExpressionValidator的配置5.2.6 IntRangeFieldValidator
的配置5.2.7 RegexFieldValidator的配置5.2.8 RequiredFieldValidator
的配置5.2.9 RequiredStringValidator
的配置5.2.10 StringLengthFieldValidator
的配置5.2.11 UrlValidator的配置5.2.12 Validation的配置5.2.13 Validations的配置5.2.14 VisitorFieldValidator的配置5.2.15 CustomValidator的配置5.3 struts.properties的配置5.4 struts-plugin.xml的配置5.5 各种配置文件的加载顺序5.6 上机实训5.7 本章习题第6章 Struts 2的类型转换6.1 Struts 2类型转换器6.1.1 Struts 2内置的类型转换器6.1.2 自定义转换器6.2 批量类型转换6.3 上机实训6.4 本章习题第7章 Struts 2的拦截器7.1 理解拦截器7.1.1 理解DRY规则7.1.2 拦截器的原理7.1.3 Struts 2内建的拦截器7.1.4 struts-default.xml里配置的
拦截器7.2 拦截器的配置7.2.1 配置拦截器7.2.2 拦截器的使用7.2.3 配置默认的拦截器7.3 自定义拦截器7.3.1 实现拦截器类7.3.2 使用拦截器7.3.3 拦截方法的拦截器7.4 拦截器示例7.5 用Annotation配置拦截器7.6 上机实训7.7 本章习题第8章 Struts 2 OGNL的应用8.1 OGNL概述8.2 OGNL语法基础8.2.1 OGNL表达式8.2.2 常量8.2.3 操作符8.2.4 访问JavaBean中的属性8.2.5 索引访问8.3 OGNL的使用8.4 Struts 2中的OGNL8.5 上机实训8.6 本章习题第9章 Struts 2的标签(1)9.1 Struts 2标签的引入9.2 通用标签9.2.1 流程控制标签9.2.2 数据标签9.3 UI标签9.3.1 表单标签9.3.2 非表单标签9.4 上机实训9.5 本章习题第10章 Struts 2的标签(2)10.1 Ajax标签10.1.1 a标签10.1.2 autocompleter标签10.1.3 bind标签10.1.4 datetimepicker标签10.1.5 div标签10.1.6 head标签10.1.7 submit标签10.1.8 tabbedPanel标签10.1.9 textarea标签10.1.10 tree/treenode标签10.2 Struts 2主题和模板10.3 上机实训10.4 本章习题第11章 Struts 2的校验11.1 校验基础11.2 服务器端的校验配置11.3 客户端校验配置11.4 Ajax校验配置11.5 上机实训11.6 本章习题第12章 Struts 2的国际化12.1 常见国际化示例12.2 页面内容的国际化12.3 错误信息国际化12.4 格式化输出日期和数值12.5 资源文件的加载方式和流程12.6 上机实训12.7 本章习题第13章 Struts 2上传下载和其他
技术13.1 Token防止表单重复提交13.1.1 TokenInterceptor的使用13.1.2 TokenSessionStoreInterceptor
的使用13.2 Struts 2文件的上传和下载13.2.1 Struts 2文件的上传13.2.2 Struts 2文件的下载13.2.3 中文文件的下载13.3 Struts 2中文乱码处理总结13.4 页面跳转技巧13.5 使用SiteMesh布局13.5.1 SiteMesh简介13.5.2 SiteMesh运行原理13.5.3 SiteMesh实例13.6 在Struts 2中使用FreeMarker13.6.1 FreeMarker简介13.6.2 FreeMarker快速上手13.6.3 在Struts 2中使用
FreeMarker13.7 上机实训13.8 本章习题第14章 S2SH技术整合14.1 为什么要整合S2SH14.2 Struts 2与Spring整合14.3 Struts 2与Hibernate整合14.4 Struts 2 + Spring + Hibernate整合14.5 上机实训14.6 本章习题第15章 Struts 2留言板项目案例15.1 系统概述15.2 系统需求15.2.1 前台留言板块15.2.2 管理留言板块15.3 系统功能描述15.3.1 浏览留言15.3.2 管理员后台操作15.4 系统设计15.4.1 系统架构设计15.4.2 业务实体设计15.4.3 业务逻辑设计15.5 数据库设计15.5.1 E-R图设计15.5.2 物理建模15.5.3 设计表格15.5.4 数据表脚本15.6 JDBC封装15.6.1 公共接口封装15.6.2 数据库连接类15.6.3 Dao工厂类15.7 功能模块实现15.7.1 控制器Action的实现15.7.2 业务逻辑层的实现15.7.3 struts.xml文件的配置15.8 运行工程15.8.1 使用工具15.8.2 工程部署15.8.3 运行程序15.9 上机实训15.10 本章习题附录1 部分属性设置说明附录2 Struts 2程序开发实用教程
习题答案