Struts 2.1权威指南

Struts 2.1权威指南
作 者: 李刚
出版社: 电子工业出版社
丛编项: Java技术大系
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 软件工程/开发项目管理
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  李刚,从事10多年的Java EE应用开发,现任疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系图书作者。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息化平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。曾兼任广东技术师范学院计算机科学系的兼职副教授。2007年3月26日的《电脑报》专访人物。培训的学生已在华为、立信、普信、网易、电信盈科等公司就职。国内著名的高端IT技术作家,已出版《疯狂Java讲义》、《疯狂Android讲义》、《轻量级Java EE企业应用实战》、《疯狂Ajax讲义》、《疯狂XML讲义》、《经典Java EE企业应用实战》、《Struts2.1权威指南》、《Ruby On Rails敏捷开发最佳实践》等著作。其中疯狂Java体系图书都是已经得到广泛的市场认同,并多次重印的畅销图书,并被多家高校选作教材,部分图书已被翻译成繁体中文版、输出到台湾地区。

内容简介

《Struts 2.1权威指南—基于WebWork核心的MXC开发》是《Struts 2权威指南》的第二版,本书介绍的Struts 2是最新的Struts 2.1。相对于2007年发布的Struts 2.0,Struts 2.1改变较大,Struts 2.1不仅修正了Struts 2.0中少量Bug(这些Bug在本书第一版中已经指出)。而且新增了REST、Convention和Java Templates,这些都是Struts 2未来的发展方向。不仅如此,Struts 2.1不再支持Ajax主题,而是改为使用Dojo插件来提供对Ajax的支持。Struts 2.1抛弃了Codebehind插件提供的“零配置”支持,改为使用Convention插件提供“零配置”,Struts 2.1新增了Portlet支持……为了让众多Struts学习者、工作者快速从Struts 2.0的开发升级到Struts 2.1,笔者升级了《Struts 2权威指南》,第二版改写了第一版中所有程序,将它们改为基于Struts 2.1运行。第二版删除了第一版中第18章的内容(Struts 2和Struts 1整合部分),全面介绍了Struts 2.1新增的Convention和REST支持。本书最后配备的两个常用的实例也都升级为基于Struts 2.1运行,读者可通过这两个实例触类旁通,解决日常开发中的问题。本书第二版保留了第一版通俗易懂的写作风格:按Struts 2.1的架构体系,细致地介绍了Struts 2.1各个知识点。在介绍过程中,笔者依照读者的学习规律,首先介绍基本概念和基本操作,然后对内容进行深入讲解。笔者在介绍Struts 2.1框架时,既照顾到了Struts 2.1初学者的能力,对每个知识点都给出简单的快速上手的示例;同时也考虑到开发者在日后开发中可能遇到的问题,详细讲解了每个知识点的各种用法,本书覆盖了Struts 2.1近80%的API。因此,本书完全可以作为Struts 2框架的权威手册,以供开发者在实际开发过程中参考。本书适用于有较好的Java编程基础,有一定JSP、Servlet等Web编程基础或具备初步Java EE编程基础的读者。本书既给出了Struts 2入门级的示范实例,也详细讲解了Struts 2各个知识点及各个选项的详细用法,可以作为Struts 2框架的权威参考。

图书目录

第1章 Struts 2概述

1.1 MVC思想概述

1.1.1 Web技术的发展

1.1.2 Model 1和Model

1.1.3 MVC思想及其优势

1.1.4 常用的MVC框架

1.2 Struts 2的起源和背景

1.2.1 Struts 1简介及存在的问题

1.2.2 WebWork简介

1.2.3 Struts 2起源

1.3 Struts 2体系介绍

1.3.1 Struts 2框架架构

1.3.2 Struts 2的配置文件

1.3.3 Strut 2的标签库

1.3.4 Struts 2的控制器组件

1.4 Struts 2与Struts 1的对比

1.5 WebWork和Struts 2对比

1.6 本章小结

第2章 Struts 2下的HelloWorld

2.1 下载和安装Struts 2框架

2.2 从用户请求开始

2.3 创建Struts 2的Web应用

2.3.1 创建Web应用

2.3.2 增加Struts 2功能

2.4 实现控制器

2.4.1 实现控制器类

2.4.2 配置Action

2.4.3 增加视图资源完成应用

2.5 改进控制器

2.5.1 实现Action接口

2.5.2 跟踪用户状态

2.5.3 添加处理信息

2.5.4 输出处理信息

2.6 改进视图组件

2.6.1 改善输出页面

2.6.2 使用UI标签简化表单页面

2.7 完成程序国际化

2.7.1 定义国际化资源文件

2.7.2 加载资源文件

2.7.3 输出国际化信息

2.8 增加数据校验

2.8.1 继承ActionSupport

2.8.2 使用Struts 2的校验框架

2.9 本章小结

第3章 Struts 2基础

3.1 WebWork的MVC实现

3.1.1 WebWork的下载和安装

3.1.2 实现Action

3.1.3 配置Action

3.1.4 完成数据校验

3.1.5 完成应用流程

3.2 在Eclipse中开发Struts

3.2.1 创建Web应用

3.2.2 增加Struts 2支持

3.2.3 部署Struts 2应用

3.2.4 增加应用的Action

3.3 Struts 2的基本流程

3.3.1 核心控制器:FilterDispatcher

3.3.2 业务控制器

3.3.3 Struts 2的模型组件

3.3.4 Struts 2的视图组件

3.3.5 Struts 2的运行流程

3.4 Struts 2的基本配置

3.4.1 配置web.xml文件

3.4.2 struts.xml配置文件

3.4.3 struts.properties配置文件

3.4.4 struts.xml文件结构

3.5 本章小结

第4章 深入Struts

4.1 深入Struts 2的配置文件

4.1.1 Bean配置

4.1.2 常量配置

4.1.3 包配置

4.1.4 命名空间配置

4.1.5 包含配置

4.1.6 拦截器配置

4.2 Struts 2的Action

4.2.1 实现Action处理类

4.2.2 Action访问Servlet API

4.2.3 Action直接访问Servlet API

4.2.4 配置Action

4.2.5 配置Action的默认处理类

4.2.6 动态方法调用

4.2.7 为action元素指定method

4.2.7 属性

4.2.8 使用通配符

4.2.9 配置默认Action

4.3 管理处理结果

4.3.1 处理结果的改进

4.3.2 配置结果

4.3.3 Struts 2支持的处理结果

4.2.7 类型

4.3.4 plainText结果类型

4.3.5 redirect结果类型

4.3.6 redirectAction结果类型

4.3.7 动态结果

4.3.8 请求参数决定结果

4.3.9 全局结果

4.4 属性驱动和模型驱动

4.4.1 模型的作用

4.4.2 使用模型驱动

4.5 Struts 2的异常机制

4.5.1 Struts 2的异常处理哲学

4.5.2 声明式异常捕捉

4.5.3 输出异常信息

4.6 未知处理器

4.7 本章小结

第5章 Struts 2的类型转换

5.1 类型转换的意义

5.1.1 表现层数据处理

5.1.2 类型转换

5.2 Struts 2内建的类型转换器

5.3 基于OGNL的类型转换

5.4 自定义类型转换器

5.4.1 系统需求

5.4.2 实现类型转换器

5.4.3 局部类型转换器

5.4.4 全局类型转换器

5.4.5 基于Struts 2的类型转换器

5.4.6 数组属性的类型转换器

5.4.7 集合属性的类型转换器

5.5 集合类型转换的高级特性

5.5.1 指定集合元素的类型

5.5.2 为Set集合的元素指定

4.2.7 索引属性

5.6 类型转换中错误处理

5.6.1 类型转换的错误处理流程

5.6.2 处理类型转换错误

5.6.3 输出类型转换错误

5.6.4 处理集合属性的转换错误

5.7 本章小结

第6章 Struts 2的输入校验

6.1 输入校验概述

6.1.1 为什么需要输入校验

6.1.2 客户端校验

6.1.3 服务器端校验

6.1.4 类型转换和输入校验

6.2 基本输入校验

6.2.1 编写校验规则文件

6.2.2 国际化提示信息

6.2.3 使用客户端校验

6.3 校验器的配置风格

6.3.1 字段校验器配置风格

6.3.2 非字段校验器配置风格

6.3.3 短路校验器

6.3.4 校验顺序和短路

6.4 校验文件的搜索规则

6.5 内建校验器

6.5.1 注册校验器

6.5.2 必填校验器

6.5.3 必填字符串校验器

6.5.4 整数校验器

6.5.5 日期校验器

6.5.6 表达式校验器

6.5.7 字段表达式校验器

6.5.8 邮件地址校验器

6.5.9 网址校验器

6.5.10 Visitor校验器

6.5.11 转换校验器

6.5.12 字符串长度校验器

6.5.13 正则表达式校验器

6.6 基于Annotation的输入校验

6.7 手动完成输入校验

6.7.1 重写validate()方法

6.7.2 重写validateXxx()方法

6.7.3 Struts 2的输入校验流程

6.8 本章小结

第7章 上传和下载文件

7.1 文件上传的原理

7.1.1 表单元素的enctype属性

7.1.2 手动上传

7.1.3 使用上传框架完成上传

7.2 Struts 2的文件上传

7.2.1 Struts 2的文件上传支持

7.2.2 实现文件上传的Action

7.2.3 配置文件上传的Action

7.2.4 手动实现文件过滤

7.2.5 拦截器实现文件过滤

7.2.6 输出错误提示

7.2.7 文件上传的常量配置

7.3 使用Pell上传

7.4 同时上传多个文件

7.4.1 使用数组同时上传多个文件

7.4.2 使用List同时上传多个文件

7.5 使用Struts 2控制文件下载

7.5.1 实现文件下载的Action

7.5.2 配置Action

7.5.3 下载前的授权控制

7.6 本章小结

第8章 Struts 2的国际化

8.1 程序国际化简介

8.1.1 程序国际化的意义

8.1.2 Java国际化的思路

8.1.3 Java支持的语言和国家

8.1.4 完成程序国际化

8.1.5 使用MessageFormat处理

8.1.5 带占位符的消息

8.1.6 使用类文件代替资源文件

8.2 Struts 2的国际化入门

8.2.1 加载全局资源文件

8.2.2 访问国际化消息

8.2.3 输出带占位符的国际化消息

8.3 加载资源文件的不同方式

8.3.1 包范围资源文件

8.3.2 Action范围资源文件

8.3.3 临时指定资源文件

8.3.4 加载资源文件的顺序

8.4 允许用户自行选择程序语言

8.4.1 Struts 2国际化的运行机制

8.4.2 创建下拉列表框

8.4.3 选择程序语言

8.5 本章小结

第9章 Struts 2的标签库

9.1 Struts 2标签库概述

9.1.1 标签的优势

9.1.2 Struts 2的标签分类

9.2 Struts 2标签入门

9.2.1 使用Struts 2标签的准备

9.2.2 Struts 2的OGNL表达式

9.2.2 语言

9.2.3 OGNL中的集合操作

9.2.4 访问静态成员

9.2.5 Lambda(λ)表达式

9.3 控制标签

9.3.1 if/elseif/else标签

9.3.2 iterator标签

9.3.3 append标签

9.3.4 generator标签

9.3.5 merge标签

9.3.6 subset标签

9.3.7 sort标签

9.4 数据标签

9.4.1 action标签

9.4.2 bean标签

9.4.3 date标签

9.4.4 debug标签

9.4.5 include标签

9.4.6 param标签

9.4.7 push标签

9.4.8 set标签

9.4.9 url标签

9.4.10 property标签

9.5 主题和模板

9.5.1 选择主题

9.5.2 自定义主题

9.6 表单标签

9.6.1 表单标签的通用属性

9.6.2 表单标签的name和

9.6.2 value属性

9.6.3 checkboxlist标签

9.6.4 combobox标签

9.6.5 doubleselect标签

9.6.6 head标签

9.6.7 optiontransferselect标签

9.6.8 select标签

9.6.9 radio标签

9.6.10 optgroup标签

9.6.11 token标签

9.6.12 updownselect标签

9.7 非表单标签

9.7.1 actionerror和actionmessage

9.7.1 标签

9.7.2 component标签

9.8 本章小结

第10章 Struts 2的拦截器

10.1 理解拦截器

10.1.1 理解DRY规则

10.1.2 拦截器的意义

10.1.3 拦截器的实现原理

10.1.4 拦截器和AOP的关系

10.1.5 拦截器在Struts 2中的作用

10.2 拦截器配置初步

10.2.1 配置拦截器

10.2.2 使用拦截器

10.2.3 配置默认拦截器

10.3 Struts 2内建的拦截器

10.3.1 Struts 2内建的拦截器

10.3.2 struts-default.properties里

10.3.2 配置的拦截器

10.4 开发自己的拦截器

10.4.1 实现拦截器类

10.4.2 使用拦截器

10.4.3 拦截器和Struts 2插件的

10.4.3 关系

10.5 深入拦截器编程

10.5.1 拦截方法的拦截器

10.5.2 拦截器的执行顺序

10.5.3 拦截结果的监听器

10.5.4 覆盖拦截器栈里特定

10.5.4 拦截器的参数

10.6 拦截器示例:实现权限控制

10.6.1 实现拦截器类

10.6.2 配置权限控制拦截器

10.7 本章小结

第11章 Struts 2的Ajax支持

11.1 Ajax概述

11.1.1 Ajax的起源和变革

11.1.2 Ajax的核心技术

11.2 Struts 2提供的Ajax支持

11.3 基于Dojo的异步表单

11.3.1 安装Dojo插件

11.3.2 定义异步表单

11.3.3 实现Action

11.3.4 实现服务器响应页面

11.4 基于Dojo的pub-sub事件

11.4 模型

11.4.1 pub-sub的原理

11.4.2 pub-sub的示例

11.4.3 阻止请求

11.5 基于Dojo的Ajax标签

11.5.1 div标签

11.5.2 submit和a标签

11.5.3 autocompleter标签

11.5.4 tabbedpanel标签

11.5.5 datetimepicker

11.5.6 tree和treenode

11.5.7 textarea

11.5.8 bind

11.6 基于JSON插件的Ajax

11.6 实现

11.6.1 JSON的基本知识

11.6.2 安装Struts 2的JSON插件

11.6.3 实现Action逻辑

11.6.4 实现JSP页面

11.7 本章小结

第12章 Struts 2的REST支持

12.1 Codebehind插件和零配置

12.1.1 自动搜索Action

12.1.2 使用Annotation指定命名

12.1.2 空间、父包和结果映射

12.2 Convention插件和零配置

12.2.1 搜索Action

12.2.2 按约定映射Action

12.2.3 按约定映射Result

12.2.4 Action链的约定

12.2.5 自动重加载映射

12.3 Convention插件的相关常量

12.4 Convention的Annotation

12.4.1 Action配置相关的

12.4.1 Annotation

12.4.2 Result配置相关的

12.4.1 Annotation

12.4.3 包和命名空间相关的

12.4.1 Annotation

12.4.4 异常处理相关的Annotation

12.4.5 拦截器配置相关的

12.4.1 Annotation

12.5 REST简介

12.5.1 资源和标识符

12.5.2 操作资源的方式

12.6 Struts 2的REST支持

12.6.1 RestActionMapper简介

12.6.2 安装REST插件

12.6.3 实现支持REST的

12.6.3 Action类

12.6.4 实现视图层

12.7 本章小结

第13章 使用FreeMarker作为

第13章 表现层

13.1 体验FreeMarker

13.1.1 下载和安装FreeMarker

13.1.2 在Java程序中使用

13.1.2 FreeMarker

13.1.3 在Web应用中使用

13.1.2 FreeMarker

13.2 FreeMarker的模板文件

13.2.1 模板结构

13.2.2 FTL指令规则

13.2.3 插值规则

13.3 表达式

13.3.1 直接指定值

13.3.2 输出变量值

13.3.3 字符串操作

13.3.4 集合连接运算符

13.3.5 Map连接运算符

13.3.6 算术运算符

13.3.7 比较运算符

13.3.8 逻辑运算符

13.3.9 内建函数

13.3.10 空值处理运算符

13.3.11 运算符优先级

13.4 FreeMarker的常用指令

13.4.1 if指令

13.4.2 switch、case、default、

13.4.2 break指令

13.4.3 list、break指令

13.4.4 include指令

13.4.5 import指令

13.4.6 noparse指令

13.4.7 escape、noescape指令

13.4.8 assign指令

13.4.9 setting指令

13.4.10 macro、nested、return指令

13.5 使用FreeMarker作为

13.5 Struts 2的视图技术

13.5.1 在FreeMarker模板中

13.5.1 使用Struts 2标签

13.5.2 使用Freemarker Result

13.5.3 解析模板中的变量

13.5.4 访问Servlet/JSP范围的值

13.6 本章小结

第14章 整合Spring

14.1 Spring简介

14.1.1 Spring的起源和核心

14.1.2 使用Spring的IoC容器

14.2 Struts 2插件

14.2.1 插件概述

14.2.2 插件开发概述

14.3 使用Spring插件完成整合

14.3.1 整合Spring前的准备工作

14.3.2 整合Spring的思考

14.4 让Spring管理控制器

14.4.1 整合流程

14.4.2 从页面请求开始

14.4.3 实现控制器逻辑

14.4.4 实现业务逻辑

14.5 使用自动装配

14.5.1 指定自动装配

14.5.2 修改配置文件

14.5.3 改变自动装配策略

14.6 本章小结

第15章 整合JSF

15.1 JSF简介

15.1.1 JSF概述

15.1.2 JSF和Struts 2的对比

15.2 使用MyFaces

15.2.1 下载和安装MyFaces

15.2.2 从输入页面开始

15.2.3 在Web应用中配置MyFaces

15.2.4 实现后台Bean

15.2.5 定义导航规则

15.3 安装JSF插件

15.4 使用JSF插件

15.4.1 实现业务逻辑组件

15.4.2 列出全部图书

15.4.3 添加/修改图书

15.5 整合JSF的思考

15.6 本章小结

第16章 整合SiteMesh

16.1 SiteMesh简介

16.1.1 SiteMesh概述

16.1.2 下载和安装SiteMesh

16.1.3 定义装饰器页面

16.1.4 定义原始页面

16.1.5 更复杂的装饰器页面

16.2 使用SiteMesh插件

16.2.1 安装SiteMesh插件

16.2.2 在Struts 2中使用SiteMesh

16.3 本章小结

第17章 整合JasperReports

17.1 JasperReports简介

17.1.1 下载和安装JasperReports

17.1.2 JasperReports初探

17.1.3 JasperReports的开发流程

17.1.4 解决PDF报表的中文问题

17.2 动态报表

17.2.1 带参数的报表

17.2.2 带查询的报表

17.2.3 以VO集合作为数据源的

17.2.3 动态报表

17.3 使用iReport设计报表

17.3.1 下载和安装iReport

17.3.2 使用iReport

17.3.3 建立数据源

17.3.4 设计报表布局

17.4 安装JasperReports插件

17.5 使用JasperReports报表

17.5.1 创建生成报表的Action

17.5.2 配置生成JasperReports

17.2.3 报表的Action

17.5.3 生成JasperReports报表

17.6 本章小结

第18章 整合JFreeChart

18.1 JFreeChart简介

18.1.1 JFreeChart的下载和安装

18.1.2 使用JFreeChart

18.1.3 JFreeChart开发步骤

18.2 JFreeChart的常用统计图表

18.2.1 柱状图

18.2.2 折线图

18.2.3 时间顺序图

18.3 在网页中生成带交互功能的

18.3 统计图

18.4 安装JFreeChart插件

18.5 在Struts 2应用中使用

18.5 JFreeChart

18.5.1 创建Action类

18.5.2 配置Action

18.6 本章小结

第19章 整合Hibernate

19.1 Hibernate概述

19.1.1 Hibernate的作用

19.1.2 Hibernate的优势

19.2 Hibernate开发入门

19.2.1 Hibernate下载和安装

19.2.2 使用Hibernate保存记录

19.2.3 使用Hibernate查询记录

19.3 Struts 2整合Hibernate的思考

19.3.1 自定义的整合方案

19.3.2 整合方案的实现策略

19.4 整合示例

19.4.1 持久层设计

19.4.2 DAO层设计

19.4.3 业务逻辑层设计

19.4.4 初始化组件工厂

19.4.5 控制器实现

19.5 整合后的思考和Spring框架

19.6 本章小结

第20章 “零配置”案例:注册登录系统

20.1 系统概述

20.1.1 系统功能简介

20.1.2 系统总体设计

20.2 实现Hibernate持久层

20.2.1 编写持久化PO类

20.2.2 编写映射文件

20.3 实现DAO层

20.3.1 管理SessionFactory

20.3.2 编写DAO接口

20.3.3 实现DAO组件

20.3.4 配置DAO组件

20.4 实现业务逻辑层

20.4.1 定义业务逻辑组件接口

20.4.2 提供业务逻辑组件实现类

20.4.3 配置业务逻辑组件

20.5 使用Struts

20.5.1 整合Struts 2和Spring

20.5.2 处理登录

20.5.3 图形验证码

20.5.4 使用Ajax验证用户名

20.5.5 注册新用户

20.6 使用SiteMesh装饰页面

20.7 本章小结

第21章 电子拍卖系统

21.1 系统功能简介和架构设计

21.1.1 系统功能简介

21.1.2 系统架构设计

21.1.3 相关技术介绍

21.2 持久层设计

21.2.1 系统实体

21.2.2 系统E-R图和数据表

21.2.3 实现Hibernate PO

21.2.4 管理SessionFactory

21.3 实现系统DAO层

21.3.1 DAO的基础配置

21.3.2 实现系统DAO组件

21.3.3 配置系统DAO组件

21.4 实现业务逻辑层

21.4.1 定义业务逻辑组件接口

21.4.2 依赖注入DAO组件

21.4.3 业务逻辑组件中的异常

21.4.3 处理

21.4.4 处理用户竞价

21.4.5 判断拍卖物品状态

21.4.6 事务管理

21.4.7 配置业务层组件

21.5 实现系统Web层

21.5.1 配置Struts 2的核心Filter

21.5.2 处理用户登录

21.5.3 图形验证码

21.5.4 Web层的异常处理

21.5.5 登录控制

21.5.6 添加物品

21.5.7 处理用户竞价

21.6 使用SiteMesh页面装饰

21.6.1 在Struts 2中整合SiteMesh

21.6.1 页面装饰

21.6.2 定义页面装饰

21.7 本章小结