内容简介
第1章 Struts 2概述
1.1 MVC模式
1.1.1 MVC模式简介
1.1.2 MVC模式基础
1.1.3 MVC模式作用
1.1.4 Model2模型中的MVC
1.2 Struts 2基础
1.2.1 Struts 1时代
1.2.2 Struts 2出世
1.2.3 Struts 2基本组成
1.2.4 Struts 2能干什么
1.3 Struts 2和MVC
第2章 Struts 2的HelloWorld
2.1 概述
2.2 准备开发环境和运行环境
2.2.1 配置JDK
2.2.2 下载并安装Eclipse
2.2.3 下载Tomcat并在Eclipse里面引用Tomcat
2.2.4 下载Struts 2以及认识Struts 2包结构
2.3 从Servlet+JSP+JavaBean实现MVC开始
2.3.1 起点概述
2.3.2 建立动态的Web工程
2.3.3 配置工程运行环境
2.3.4 编写JavaBean
2.3.5 编写Servlet
2.3.6 配置web.xml
2.3.7 编写登录页面
2.3.8 编写欢迎页面
2.3.9 测试示例
2.3.10 中文处理
2.4 Struts 2的HelloWorld
2.4.1 概述
2.4.2 配置Struts2的运行环境
2.4.3 实现动作类(Action)
2.4.4 配置struts.xml
2.4.5 制作登录页面
2.4.6 制作欢迎页面
2.4.7 测试示例
2.5 开发中的一些小窍门
2.5.1 概述
2.5.2 使用DTD来获得XML帮助
2.5.3 在新建菜单中添加JSP
2.5.4 获得Action的全类名
2.5.5 获得JSP在Web工程中的绝对路径
第3章 Struts 2的架构和运行流程
3.1 Struts 2的系统架构
3.1.1 Struts2的系统架构
3.1.2 各模块说明
3.2 Struts 2的运行流程
3.3 Struts 2的核心概念
3.4 小结
第4章 Action
4.1 Action基础
4.1.1 Action是什么
4.1.2 Action能干什么
4.1.3 Action的基本配置
4.2 Action的实现
4.2.1 POJO的实现
4.2.2 实现Action接口
4.2.3 继承ActionSupport类
4.2.4 execute方法内部实现方式
4.2.5 简单的单元测试
4.3 Action的数据
4.3.1 数据来源
4.3.2 基本的数据对应方式
4.3.3 传入非String类型的值
4.3.4 如何处理传入多个值
4.4 Action的配置
4.4.1 〈package〉的配置
4.4.2 〈action〉的配置
4.4.3 分模块配置方式
4.4.4 使用通配符
4.4.5 默认类配置方式
4.5 Action的其他重要知识
4.5.1 Action的生命周期
4.5.2 调用非execute方法
第5章 Result
5.1 Result基础
5.1.1 Result是什么和能干什么
5.1.2 Result和ResultType
5.1.3 Result有什么
5.2 预定义的Result
5.2.1 预定义的ResultType
5.2.2 如何配置使用
5.2.3 名称为dispatcher的ResultType
5.2.4 名称为redirect的ResultType
5.2.5 名称为chain的ResultType
5.2.6 名称为FreeMarker的ResultType
5.2.7 其他ResultType
5.3 全局Result
5.3.1 全局Result概述
5.3.2 配置和使用
5.3.3 搜寻Result的顺序
5.3.4 应用示例
5.4 使用通配符
5.5 Struts 2的异常映射
5.5.1 异常映射基础
5.5.2 局部异常映射与全局异常映射
5.5.3 在页面输出异常信息
5.6 PreResultListener
5.6.1 什么是PreResultListener
5.6.2 PreResultListenet实现示例
5.7 自定义Result
5.7.1 自定义Result概述
5.7.2 开发自定义Result
第6章 拦截器
6.1 拦截器基础
6.1.1 拦截器是什么
6.1.2 拦截器的优点
6.1.3 拦截器有什么
6.2 预定义的拦截器
6.2.1 预定义的拦截器
6.2.2 预定义的拦截器栈
6.2.3 预定义拦截器的配置使用
6.2.4 拦截器的调用顺序
6.2.5 实践一下
6.3 自定义的拦截器
6.3.1 什么是自定义的拦截器
6.3.2 开发自定义拦截器
6.3.3 向拦截器传入参数
6.4 两个有用的拦截器
6.4.1 更强大的logger拦截器
6.4.2 登录检查拦截器
第7章 值栈和OGNL
7.1 值栈
7.1.1 值栈是什么
7.1.2 值栈能干什么
7.1.3 值栈有什么
7.1.4 ActionContext的基本使用
7.1.5 ValueStack的基本使用
7.2 OGNL
7.2.1 OGNL概述
7.2.2 OGNL的基本使用
7.2.3 访问静态方法和静态属性
7.3 使用OGNL访问复杂对象
7.3.1 访问域对象
7.3.2 访问List或数组
7.3.3 访问Map
7.3.4 组合使用
7.4 ActionContext和ServletActionContext
7.4.1 再探ActionContext
7.4.2 ServletActionContext
7.4.3 ActionContext和ServletActionContext
第8章 Struts 2的Taglib
8.1 Struts 2的Taglib概述
8.1.1 概述
8.1.2 Struts 2标签的分类
8.2 数据标签
8.2.1 property标签
8.2.2 set标签
8.2.3 push标签
8.2.4 bean与param标签
8.2.5 date标签
8.2.6 debug标签
8.2.7 url与a标签
8.2.8 include与param标签
8.2.9 其他标签
8.3 控制标签
8.3.1 if、elseif与else标签
8.3.2 iterator标签
8.3.3 append与param标签
8.3.4 generator标签
8.3.5 merge标签
8.3.6 sort标签
8.3.7 subset标签
8.4 UI标签
8.4.1 概述
8.4.2 模板和主题
8.4.3 表单标签的通用属性
8.4.4 form标签
8.4.5 文本域型标签
8.4.6 选择型标签
8.4.7 其他简单标签
8.4.8 复杂操作标签
第9章 国际化
9.1 概述
9.2 Java内置的国际化
9.2.1 Java内置的国际化入门
9.2.2 对中文的支持
9.2.3 向国际化信息传入参数
9.2.4 小结
9.3 Struts 2中的国际化入门
9.3.1 引用国际化信息资源文件
9.3.2 在JSP中访问国际化信息
9.3.3 指定浏览器使用的语种
9.4 资源文件读取顺序
9.4.1 全局级资源文件
9.4.2 包级资源文件
9.4.3 类级资源文件
9.4.4 资源文件的覆盖顺序
9.5 Struts 2访问国际化信息的不同方式
9.5.1 用〈s:text〉访问国际化信息
9.5.2 用表单标签访问国际化信息
9.5.3 在Action中访问国际化信息
9.6 指定语言信息的不同方式
9.6.1 概述
9.6.2 Struts 2的常量设置
9.6.3 由用户选择语言
9.6.4 三种方式的覆盖关系
第10章 验证框架
10.1 验证框架的作用
10.2 验证框架入门
10.2.1 准备基础资源
10.2.2 初会验证框架
10.2.3 验证框架的运行原理
10.3 验证器类型
10.3.1 字段验证器
10.3.2 动作验证器
10.4 内建验证器
10.4.1 概述
10.4.2 类型转换错误验证器(conversion)
10.4.3 整数验证器(int)
10.4.4 短整数验证器(short)和长整数验证器(long)
10.4.5 日期验证器(date)
10.4.6 双精度浮点验证器(double)
10.4.7 邮件验证器(E-mail)
10.4.8 URL验证器(url)
10.4.9 必填验证器(required)
10.4.10 必填字符串验证器(requiredstring)
10.4.11 字符串长度验证器(stringlength)
10.4.12 正则表达式验证器(regex)
10.4.13 字段表达式验证器(fieldexpression)和表达式验证器(expression)
10.4.14 访问者验证器(visitor)
10.5 自定义验证器
10.5.1 概述
10.5.2 实现自定义验证器
10.5.3 声明自定义验证器
10.5.4 引用自定义验证器
10.6 引用验证器返回的错误信息
10.6.1 引用验证器返回的错误信息
10.7 验证器框架的查找顺序
10.7.1 验证器框架的查找顺序
10.7.2 验证器短路
第11章 类型转换
11.1 类型转换的作用
11.2 内建类型转换器
11.2.1 简单类型
11.2.2 枚举类型
11.2.3 复合类型
11.3 自定义类型转换器
11.3.1 概述
11.3.2 实现自定义类型转换器
11.3.3 注册和引用自定义类型转换器
11.4 类型转换器引用方式
11.4.1 全局级类型转换器引用
11.4.2 类级类型转换器引用
第12章 CRUD综合运用
12.1 概述
12.1.1 功能简介
12.1.2 使用的技术
12.1.3 准备开发环境
12.2 实现域对象和数据层
12.2.1 建表和域对象
12.2.2 建立条件组合对象
12.2.3 实现数据层
12.3 使用Struts 2来实现表现层
12.3.1 将一组相关的Action类合成一个
12.3.2 显示全部用户
12.3.3 添加用户
12.3.4 修改用户
12.3.5 删除用户
12.3.6 按条件查询
12.3.7 小结
12.4 加入国际化信息
12.4.1 回顾国际化信息
12.4.2 准备国际化信息文件
12.4.3 让页面来使用国际化信息
12.4.4 切换语言
12.5 加入验证
12.5.1 回顾验证框架
12.5.2 为添加用户页面添加验证
12.5.3 为查询用户页面添加验证
12.5.4 在验证中引用国际化信息
12.6 加入拦截器
12.6.1 回顾拦截器
12.6.2 编写自定义拦截器
12.6.3 配置自定义拦截器
12.6.4 使用自定义拦截器的效果
第13章 文件上传下载
13.1 文件上传
13.1.1 概述
13.1.2 使用Struts 2实现文件上传
13.1.3 获取文件的更多信息
13.1.4 限制文件的大小及类型
13.1.5 上传超大的文件
13.1.6 在一个表单中上传多个文件
13.2 文件下载
13.2.1 概述
13.2.2 stream结果类型
13.2.3 实现文件下载的Action
13.2.4 在struts.xml中配置Action
13.2.5 制作下载页面
13.2.6 难道只能在配置文件中写死文件名吗?
13.2.7 处理中文文件名
第14章 对Ajax的支持
14.1 Ajax基础
14.1.1 Ajax概述
14.1.2 XMLHttpRequest对象
14.1.3 Ajax示例
14.2 Struts 2对Ajax的支持
14.2.1 概述
14.2.2 名为Stream的Result
14.3 Ajax JSP tags
14.3.1 概述
14.3.2 head标签
14.3.3 div标签
14.3.4 a标签和submit标签
14.3.5 bind标签
14.3.6 datetimepicker标签
14.3.7 autocompleter标签
14.3.8 textarea标签
14.3.9 tabbedpanel标签
14.3.10 tree和treenode标签
14.4 使用JSON插件
14.4.1 JSON基础
14.4.2 JSON插件
14.4.3 使用JSON插件来实现Ajax
第15章 整合Spr ing
15.1 概述
15.1.1 应用程序的分层
15.1.2 使用Spring管理对象间的依赖关系
15.2 整合Spring与Struts 2
15.2.1 概述
15.2.2 复制到jar包
15.2.3 改写SampleAction
15.2.4 编写Spring的配置文件applicationContext.xml
15.2.5 在web.xml中引用Spring配置文件
15.2.6 修改struts.xml
15.3 自动装配
第16章 单元测试
16.1 概述
16.2 测试动作类Action
16.2.1 测试动作类Action入门
16.2.2 使用JUnit测试动作类Action
16.3 测试完整的Struts 2运行流程
16.3.1 概述
16.3.2 准备测试环境内
16.3.3 重写测试用例
16.3.4 运行测试用例
第17章 防止重复提交
17.1 什么是重复提交
17.2 使用〈s:token/〉标签
17.2.1 使用〈s:token/〉标签入门
17.2.2 〈s:token/〉的原理
17.3 更强大的tokenSession拦截器
第18章 结合JFreeChart
18.1 JFreeChart使用
18.1.1 概述
18.1.2 JFreeChart下载
18.1.3 使用JFreeChart画出饼图
18.1.4 使用JFreeChart画出柱状图
18.1.5 小结
18.2 Struts 2插件概述
18.2.1 Struts 2插件的存在方式
18.2.2 Struts 2插件的加载顺序和作用
18.3 Struts 2结合JFreeChart
18.3.1 构建结合环境
18.3.2 Struts 2结合JFreeChart来画饼图
18.3.3 Struts 2结合JFreeChart来画柱状图
第19章 进度条
19.1 使用“进度条”告知用户进度
19.2 使用execAndWait拦截器模拟进度条
19.2.1 模拟长时间运行的Action
19.2.2 配置Action
19.2.3 实现“进度条”页面
19.2.4 实现完成页面
19.2.5 运行测试
19.2.6 图形化的进度条
第20章 整合SiteMesh
20.1 调整应用的风格
20.2 单独使用SiteMesh
20.2.1 SiteMesh下载
20.2.2 复制资源
20.2.3 引用过滤器
20.2.4 定义模板页面
20.2.5 定义被装饰页面
20.2.6 合成模板页面与被装饰页面
20.3 整合Struts 2与SiteMesh
20.3.1 准备资源
20.3.2 引用过滤器
20.3.3 结合模板页面和被装饰页面
第21章 零配置
21.1 概述
21.2 约定大于配置
21.2.1 约定大于配置的HelloWorld
21.2.2 常见的约定
21.2.3 示例常见的约定
21.3 通过注解来实现零配置
21.3.1 概述
21.3.2 HelloWorld
21.3.3 @Action和@Actions
21.3.4 @Result和@Results
21.3.5 @Namespace
21.3.6 @InterceptorRef和@InterceptorRefs
21.3.7 @ExceptionMapping和@ExceptionMappings
21.3.8 @ParentPackage
21.3.9 用注解来替代struts.xml
附录A Struts 2的配置
A.1 struts.xml的配置
A.1.1 概述
A.1.2 DOCTYPE和根元素
A.1.3 package元素
A.1.4 action元素
A.1.5 include元素
A.1.6 bean元素
A.1.7 constant元素
A.1.8 unknown-handler-stack元素
A.1.9 unknown-handler-ref元素
A.1.10 default-action-ref元素
A.1.11 default-interceptor-ref元素
A.1.12 default-class-ref元素
A.1.13 exception-mapping元素
A.1.14 global-exception-mapping元素
A.1.15 global-results元素
A.1.16 interceptor元素
A.1.17 interceptor-ref元素
A.1.18 interceptor-stack元素
A.1.19 interceptors元素
A.1.20 param元素
A.1.21 result元素
A.1.22 result-type元素
A.1.23 result-types元素
A.2 struts.properties的配置
A.2.1 概述
A.2.2 具体的参数描述
参考文献