封面
版权信息
前言
第1章 Struts 2概述
1.1 MVC思想概述
1.1.1 Web技术的发展
1.1.2 Model1和Model2
1.1.3 MVC思想及其优势
1.1.4 常用的MVC框架
1.2 Struts1的缺陷与现状
1.2.1 支持的表现层技术单一
1.2.2 与ServletAPI严重耦合
1.2.3 代码依赖于Struts1API
1.3 Struts2的优势与体系
1.3.1 Struts2的优势
1.3.2 Struts2架构
1.3.3 Struts2的配置文件
1.3.4 Strut2的标签库
1.3.5 Struts2的控制器组件
1.4 本章小结
第2章 Struts 2的HelloWorld
2.1 下载和安装Struts2框架
2.2 从用户请求开始
2.3 创建Struts2的Web应用
2.3.1 创建Web应用
2.3.2 增加Struts2功能
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 保护JSP页面
2.6.2 改善输出页面
2.6.3 使用UI标签简化表单页面
2.7 完成程序国际化
2.7.1 定义国际化资源文件
2.7.2 加载资源文件
2.7.3 输出国际化信息
2.8 增加数据校验
2.8.1 继承ActionSupport
2.8.2 使用Struts2的校验框架
2.9 本章小结
第3章 Struts 2核心技术
3.1 在Eclipse中开发Struts2
3.1.1 创建Web应用
3.1.2 增加Struts2支持
3.1.3 部署Struts2应用
3.1.4 增加应用的Action
3.2 Struts2的基本流程
3.2.1 核心控制器StrutsPrepareAndExecuteFilter
3.2.2 业务控制器
3.2.3 Struts2的模型组件
3.2.4 Struts2的视图组件
3.2.5 Struts2的运行流程
3.3 Struts2的基本配置
3.3.1 配置web.xml文件
3.3.2 struts.xml配置文件
3.3.3 struts.properties文件与常量配置
3.3.4 struts.xml文件结构
3.4 深入Struts2配置文件
3.4.1 Bean配置
3.4.2 常量配置
3.4.3 包配置
3.4.4 命名空间配置
3.4.5 包含配置
3.4.6 拦截器配置
3.5 Struts2的Action
3.5.1 实现Action处理类
3.5.2 Action访问ServletAPI
3.5.3 Action直接访问ServletAPI
3.5.4 配置Action
3.5.5 配置Action的默认处理类
3.5.6 动态方法调用
3.5.7 为action元素指定method属性
3.5.8 使用通配符
3.5.9 配置默认的Action
3.6 管理处理结果
3.6.1 处理结果的改进
3.6.2 配置结果
3.6.3 Struts2支持的处理结果类型
3.6.4 chain结果类型
3.6.5 plainText结果类型
3.6.6 redirect结果类型
3.6.7 redirectAction结果类型
3.6.8 动态结果
3.6.9 请求参数决定结果
3.6.10 全局结果
3.7 属性驱动和模型驱动
3.7.1 模型的作用
3.7.2 使用模型驱动
3.8 Struts2的异常机制
3.8.1 Struts2的异常处理哲学
3.8.2 声明式异常捕捉
3.8.3 输出异常信息
3.9 未知处理器
3.10 本章小结
第4章 Struts 2的类型转换
4.1 类型转换的意义
4.1.1 表现层数据处理
4.1.2 传统的类型转换
4.2 Struts2内建的类型转换器
4.3 基于OGNL的类型转换
4.3.1 使用OGNL转换成Map集合
4.3.2 使用OGNL转换成List集合
4.4 自定义类型转换器
4.4.1 系统需求
4.4.2 实现类型转换器
4.4.3 局部类型转换器
4.4.4 全局类型转换器
4.4.5 局部类型转换器和全局类型转换器的说明
4.4.6 基于Struts2的类型转换器
4.4.7 数组属性的类型转换器
4.4.8 集合属性的类型转换器
4.5 集合类型转换的高级特性
4.5.1 指定集合元素的类型
4.5.2 为Set集合的元素指定索引属性
4.6 类型转换中的错误处理
4.6.1 类型转换的错误处理流程
4.6.2 处理类型转换错误
4.6.3 输出类型转换错误
4.6.4 处理集合属性的转换错误
4.7 本章小结
第5章 Struts 2的输入校验
5.1 输入校验概述
5.1.1 为什么需要输入校验
5.1.2 客户端校验
5.1.3 服务器端校验
5.1.4 类型转换和输入校验
5.2 基本输入校验
5.2.1 编写校验规则文件
5.2.2 国际化提示信息
5.2.3 使用客户端校验
5.3 校验器的配置风格
5.3.1 字段校验器配置风格
5.3.2 非字段校验器配置风格
5.3.3 短路校验器
5.3.4 校验顺序和短路
5.4 校验文件的搜索规则
5.5 内建校验器
5.5.1 注册校验器
5.5.2 必填校验器
5.5.3 必填字符串校验器
5.5.4 整数校验器
5.5.5 日期校验器
5.5.6 表达式校验器
5.5.7 字段表达式校验器
5.5.8 邮件地址校验器
5.5.9 网址校验器
5.5.10 Visitor校验器
5.5.11 转换校验器
5.5.12 字符串长度校验器
5.5.13 正则表达式校验器
5.6 基于Annotation的输入校验
5.7 手动完成输入校验
- APP免费
5.7.1 重写validate方法
- APP免费
5.7.2 重写validateXxx方法
- APP免费
5.7.3 Struts2的输入校验流程
- APP免费
5.8 本章小结
- APP免费
第6章 上传和下载文件
- APP免费
6.1 文件上传的原理
- APP免费
6.1.1 表单元素的enctype属性
- APP免费
6.1.2 手动上传
- APP免费
6.1.3 使用Servlet3.0API完成上传
- APP免费
6.2 Struts2的文件上传
- APP免费
6.2.1 Struts2的文件上传支持
- APP免费
6.2.2 实现文件上传的Action
- APP免费
6.2.3 配置文件上传的Action
- APP免费
6.2.4 手动实现文件过滤
- APP免费
6.2.5 拦截器实现文件过滤
- APP免费
6.2.6 输出错误提示
- APP免费
6.2.7 文件上传的常量配置
- APP免费
6.3 使用Pell上传
- APP免费
6.4 同时上传多个文件
- APP免费
6.4.1 使用数组同时上传多个文件
- APP免费
6.4.2 使用List同时上传多个文件
- APP免费
6.5 使用Struts2控制文件下载
- APP免费
6.5.1 实现文件下载的Action
- APP免费
6.5.2 配置Action
- APP免费
6.5.3 下载前的授权控制
- APP免费
6.6 本章小结
- APP免费
第7章 Struts 2的国际化
- APP免费
7.1 程序国际化简介
- APP免费
7.1.1 程序国际化的意义
- APP免费
7.1.2 Java国际化的思路
- APP免费
7.1.3 Java支持的国家和语言
- APP免费
7.1.4 完成程序国际化
- APP免费
7.1.5 使用MessageFormat处理带占位符的消息
- APP免费
7.2 Struts2的国际化支持
- APP免费
7.2.1 Struts2的国际化
- APP免费
7.2.2 视图页面的国际化
- APP免费
7.2.3 Action的国际化
- APP免费
7.2.4 使用包范围的国际化资源
- APP免费
7.2.5 使用全局国际化资源
- APP免费
7.2.6 输出带占位符的国际化消息
- APP免费
7.2.7 加载资源文件的顺序
- APP免费
7.3 允许用户自行选择程序语言
- APP免费
7.3.1 Struts2国际化机制的原理
- APP免费
7.3.2 创建下拉列表框
- APP免费
7.3.3 选择程序语言
- APP免费
7.4 本章小结
- APP免费
第8章 Struts 2的标签库
- APP免费
8.1 Struts2标签库概述
- APP免费
8.1.1 标签的优势
- APP免费
8.1.2 Struts2的标签分类
- APP免费
8.2 Struts2标签入门
- APP免费
8.2.1 使用Struts2标签的准备
- APP免费
8.2.2 Struts2的OGNL表达式语言
- APP免费
8.2.3 OGNL中的集合操作
- APP免费
8.2.4 访问静态成员
- APP免费
8.2.5 Lambda(λ)表达式
- APP免费
8.3 控制标签
- APP免费
8.3.1 if/elseif/else标签
- APP免费
8.3.2 iterator标签
- APP免费
8.3.3 append标签
- APP免费
8.3.4 generator标签
- APP免费
8.3.5 merge标签
- APP免费
8.3.6 subset标签
- APP免费
8.3.7 sort标签
- APP免费
8.4 数据标签
- APP免费
8.4.1 action标签
- APP免费
8.4.2 bean标签
- APP免费
8.4.3 date标签
- APP免费
8.4.4 debug标签
- APP免费
8.4.5 i18n标签
- APP免费
8.4.6 include标签
- APP免费
8.4.7 param标签
- APP免费
8.4.8 property标签
- APP免费
8.4.9 push标签
- APP免费
8.4.10 set标签
- APP免费
8.4.11 text标签
- APP免费
8.4.12 url标签
- APP免费
8.5 主题和模板
- APP免费
8.5.1 选择主题
- APP免费
8.5.2 自定义主题
- APP免费
8.6 表单标签
- APP免费
8.6.1 表单标签的通用属性
- APP免费
8.6.2 表单标签的name和value属性
- APP免费
8.6.3 checkboxlist标签
- APP免费
8.6.4 combobox标签
- APP免费
8.6.5 doubleselect标签
- APP免费
8.6.6 head标签
- APP免费
8.6.7 optiontransferselect标签
- APP免费
8.6.8 select标签
- APP免费
8.6.9 radio标签
- APP免费
8.6.10 optgroup标签
- APP免费
8.6.11 token标签
- APP免费
8.6.12 updownselect标签
- APP免费
8.7 非表单标签
- APP免费
8.7.1 actionerror和actionmessage标签
- APP免费
8.7.2 component标签
- APP免费
8.8 本章小结
- APP免费
第9章 Struts 2的拦截器
- APP免费
9.1 理解拦截器
- APP免费
9.1.1 理解DRY规则
- APP免费
9.1.2 拦截器的意义
- APP免费
9.1.3 拦截器的实现原理
- APP免费
9.1.4 拦截器和AOP的关系
- APP免费
9.1.5 拦截器在Struts2中的作用
- APP免费
9.2 Struts2内建拦截器介绍
- APP免费
9.2.1 Struts2内建拦截器
- APP免费
9.2.2 struts-default.xml里配置的拦截器
- APP免费
9.3 拦截器配置初步
- APP免费
9.3.1 配置拦截器
- APP免费
9.3.2 使用拦截器
- APP免费
9.3.3 配置默认的拦截器
- APP免费
9.4 开发自己的拦截器
- APP免费
9.4.1 实现拦截器类
- APP免费
9.4.2 使用拦截器
- APP免费
9.4.3 拦截器和Struts2插件的关系
- APP免费
9.5 深入拦截器编程
- APP免费
9.5.1 拦截方法的拦截器
- APP免费
9.5.2 拦截器的执行顺序
- APP免费
9.5.3 拦截结果的监听器
- APP免费
9.5.4 覆盖拦截器栈里特定拦截器的参数
- APP免费
9.6 拦截器应用示例:实现权限控制
- APP免费
9.6.1 实现拦截器类
- APP免费
9.6.2 配置权限控制拦截器
- APP免费
9.7 本章小结
- APP免费
第10章 Struts 2的Ajax支持
- APP免费
10.1 Struts2基本的Ajax支持
- APP免费
10.1.1 Ajax技术概述
- APP免费
10.1.2 使用stream结果类型实现Ajax
- APP免费
10.2 基于Dojo的异步表单
- APP免费
10.2.1 安装Dojo插件
- APP免费
10.2.2 定义异步表单
- APP免费
10.2.3 实现Action
- APP免费
10.2.4 实现服务器响应页面
- APP免费
10.3 基于Dojo的Pub-Sub事件模型
- APP免费
10.3.1 Pub-Sub原理
- APP免费
10.3.2 Pub-Sub示例
- APP免费
10.3.3 阻止请求
- APP免费
10.4 基于Dojo的Ajax标签
- APP免费
10.4.1 div标签
- APP免费
10.4.2 a和submit标签
- APP免费
10.4.3 autocompleter标签
- APP免费
10.4.4 tabbedpanel标签
- APP免费
10.4.5 datetimepicker标签
- APP免费
10.4.6 tree和treenode标签
- APP免费
10.4.7 textarea标签
- APP免费
10.4.8 bind标签
- APP免费
10.5 基于JSON插件的Ajax实现
- APP免费
10.5.1 JSON的基本知识
- APP免费
10.5.2 安装Struts2的JSON插件
- APP免费
10.5.3 实现Action逻辑
- APP免费
10.5.4 实现JSP页面
- APP免费
10.6 本章小结
- APP免费
第11章 Convention插件与REST支持
- APP免费
11.1 Convention插件和零配置
- APP免费
11.1.1 搜索Action
- APP免费
11.1.2 按约定映射Action
- APP免费
11.1.3 按约定映射Result
- APP免费
11.1.4 Action链的约定
- APP免费
11.1.5 自动重加载映射
- APP免费
11.2 Convention插件的相关常量
- APP免费
11.3 Convention的Annotation
- APP免费
11.3.1 Action配置相关的Annotation
- APP免费
11.3.2 Result配置相关的Annotation
- APP免费
11.3.3 包和命名空间相关的Annotation
- APP免费
11.3.4 异常处理相关的Annotation
- APP免费
11.3.5 拦截器配置相关的Annotation
- APP免费
11.4 REST简介
- APP免费
11.4.1 资源和标识符
- APP免费
11.4.2 操作资源的方式
- APP免费
11.5 Struts2的REST支持
- APP免费
11.5.1 RestActionMapper简介
- APP免费
11.5.2 安装REST插件
- APP免费
11.5.3 实现支持REST的Action类
- APP免费
11.6 本章小结
- APP免费
第12章 FreeMarker详解
- APP免费
12.1 体验FreeMarker
- APP免费
12.1.1 下载和安装FreeMarker
- APP免费
12.1.2 在Java程序中使用FreeMarker
- APP免费
12.1.3 在Web应用中使用FreeMarker
- APP免费
12.2 FreeMarker的模板文件
- APP免费
12.2.1 模板结构
- APP免费
12.2.2 FTL指令规则
- APP免费
12.2.3 插值规则
- APP免费
12.3 表达式
- APP免费
12.3.1 直接指定值
- APP免费
12.3.2 输出变量值
- APP免费
12.3.3 字符串操作
- APP免费
12.3.4 集合连接运算符
- APP免费
12.3.5 Map连接运算符
- APP免费
12.3.6 算术运算符
- APP免费
12.3.7 比较运算符
- APP免费
12.3.8 逻辑运算符
- APP免费
12.3.9 内建函数
- APP免费
12.3.10 空值处理运算符
- APP免费
12.3.11 运算符优先级
- APP免费
12.4 FreeMarker的常用指令
- APP免费
12.4.1 if指令
- APP免费
12.4.2 switch、case、default、break指令
- APP免费
12.4.3 list、break指令
- APP免费
12.4.4 include指令
- APP免费
12.4.5 import指令
- APP免费
12.4.6 noparse指令
- APP免费
12.4.7 escape、noescape指令
- APP免费
12.4.8 assign指令
- APP免费
12.4.9 setting指令
- APP免费
12.4.10 macro、nested、return指令
- APP免费
12.5 使用FreeMarker作为Struts2的视图技术
- APP免费
12.5.1 在FreeMarker模板中使用Struts2标签
- APP免费
12.5.2 使用FreemarkerResult
- APP免费
12.5.3 解析模板中的变量
- APP免费
12.5.4 访问Servlet/JSP范围的值
- APP免费
12.6 本章小结
- APP免费
第13章 整合Spring
- APP免费
13.1 Spring简介
- APP免费
13.1.1 Spring的起源和核心
- APP免费
13.1.2 Spring在JavaEE应用中的作用
- APP免费
13.2 Struts2插件
- APP免费
13.2.1 插件概述
- APP免费
13.2.2 插件开发概述
- APP免费
13.3 使用Spring插件完成整合
- APP免费
13.3.1 整合Spring前的准备工作
- APP免费
13.3.2 整合Spring的思考
- APP免费
13.4 让Spring管理控制器
- APP免费
13.4.1 整合流程
- APP免费
13.4.2 从页面请求开始
- APP免费
13.4.3 实现控制器逻辑
- APP免费
13.4.4 实现业务逻辑
- APP免费
13.5 使用自动装配
- APP免费
13.5.1 指定自动装配
- APP免费
13.5.2 修改配置文件
- APP免费
13.5.3 改变自动装配策略
- APP免费
13.6 本章小结
- APP免费
第14章 整合JSF
- APP免费
14.1 JSF简介
- APP免费
14.1.1 JSF概述
- APP免费
14.1.2 JSF和Struts2的对比
- APP免费
14.2 使用MyFaces
- APP免费
14.2.1 下载和安装MyFaces
- APP免费
14.2.2 从输入页面开始
- APP免费
14.2.3 在Web应用中配置MyFaces
- APP免费
14.2.4 实现后台Bean
- APP免费
14.2.5 定义导航规则
- APP免费
14.3 安装JSF插件
- APP免费
14.4 使用JSF插件
- APP免费
14.4.1 实现业务逻辑组件
- APP免费
14.4.2 列出全部图书
- APP免费
14.4.3 添加/修改图书
- APP免费
14.5 整合JSF的思考
- APP免费
14.6 本章小结
- APP免费
第15章 整合SiteMesh
- APP免费
15.1 SiteMesh简介
- APP免费
15.1.1 SiteMesh概述
- APP免费
15.1.2 下载和安装SiteMesh
- APP免费
15.1.3 定义装饰器页面
- APP免费
15.1.4 定义原始页面
- APP免费
15.1.5 更复杂的装饰器页面
- APP免费
15.2 使用SiteMesh插件
- APP免费
15.2.1 安装SiteMesh插件
- APP免费
15.2.2 在Struts2中使用SiteMesh
- APP免费
15.3 本章小结
- APP免费
第16章 整合JasperReports
- APP免费
16.1 JasperReports简介
- APP免费
16.1.1 下载和安装JasperReports
- APP免费
16.1.2 开发JasperReports静态报表
- APP免费
16.1.3 JasperReports的开发流程
- APP免费
16.1.4 解决PDF报表的中文问题
- APP免费
16.2 动态报表
- APP免费
16.2.1 带参数的报表
- APP免费
16.2.2 带查询的报表
- APP免费
16.2.3 以VO集合作为数据源的动态报表
- APP免费
16.3 使用iReport设计报表
- APP免费
16.3.1 下载和安装iReport
- APP免费
16.3.2 使用iRepor
- APP免费
16.3.3 建立数据源
- APP免费
16.3.4 设计报表布局
- APP免费
16.4 安装JasperReports插件
- APP免费
16.5 使用JasperReports报表
- APP免费
16.5.1 创建生成报表的Action
- APP免费
16.5.2 配置生成JasperReports报表的Action
- APP免费
16.5.3 生成JasperReports报表
- APP免费
16.6 本章小结
- APP免费
第17章 整合JFreeChart
- APP免费
17.1 JFreeChart简介
- APP免费
17.1.1 JFreeChart的下载和安装
- APP免费
17.1.2 使用JFreeChart
- APP免费
17.1.3 JFreeChart开发步骤
- APP免费
17.2 JFreeChart的常用统计图表
- APP免费
17.2.1 柱状图
- APP免费
17.2.2 折线图
- APP免费
17.2.3 时间顺序图
- APP免费
17.3 在网页中生成带交互功能的统计图
- APP免费
17.4 安装JFreeChart插件
- APP免费
17.5 在Struts2应用中使用JFreeChart
- APP免费
17.5.1 创建Action类
- APP免费
17.5.2 配置Action
- APP免费
17.5.3 改进JFreeChart插件
- APP免费
17.5.4 使用改进后的JFreeChart 插件
- APP免费
17.6 本章小结
- APP免费
第18章 整合Hibernate
- APP免费
18.1 Hibernate概述
- APP免费
18.1.1 ORM的功能与Hibernate
- APP免费
18.1.2 流行的ORM框架简介
- APP免费
18.2 Struts2整合Hibernate的思考
- APP免费
18.2.1 自定义的整合方案
- APP免费
18.2.2 整合方案的实现策略
- APP免费
18.3 整合示例
- APP免费
18.3.1 持久层设计
- APP免费
18.3.2 DAO层设计
- APP免费
18.3.3 业务逻辑层设计
- APP免费
18.3.4 初始化组件工厂
- APP免费
18.3.5 控制器实现
- APP免费
18.4 整合后的思考和Spring 框架
- APP免费
18.5 本章小结
- APP免费
第19章 “零配置”案例:注册登录系统
- APP免费
19.1 系统概述
- APP免费
19.1.1 系统功能简介
- APP免费
19.1.2 系统总体设计
- APP免费
19.2 实现Hibernate持久层
- APP免费
19.3 实现DAO层
- APP免费
19.3.1 管理SessionFactory
- APP免费
19.3.2 实现DAO基类
- APP免费
19.3.3 实现系统DAO组件
- APP免费
19.3.4 配置DAO组件
- APP免费
19.4 实现业务逻辑层
- APP免费
19.4.1 定义业务逻辑组件接口
- APP免费
19.4.2 提供业务逻辑组件实现类
- APP免费
19.4.3 配置业务逻辑组件
- APP免费
19.5 使用Struts2
- APP免费
19.5.1 整合Struts2和Spring
- APP免费
19.5.2 处理登录
- APP免费
19.5.3 图形验证码
- APP免费
19.5.4 使用Ajax验证用户名
- APP免费
19.5.5 注册新用户
- APP免费
19.6 使用SiteMesh装饰页面
- APP免费
19.7 本章小结
- APP免费
第20章 电子拍卖系统
- APP免费
20.1 系统功能简介和架构设计
- APP免费
20.1.1 系统功能简介
- APP免费
20.1.2 系统架构设计
- APP免费
20.1.3 相关技术介绍
- APP免费
20.2 持久层设计
- APP免费
20.2.1 系统实体
- APP免费
20.2.2 系统E-R图和数据表
- APP免费
20.2.3 实现HibernatePO
- APP免费
20.2.4 管理SessionFactory
- APP免费
20.3 实现系统DAO层
- APP免费
20.3.1 实现DAO基类
- APP免费
20.3.2 实现系统DAO组件
- APP免费
20.3.3 配置系统DAO组件
- APP免费
20.4 实现业务逻辑层
- APP免费
20.4.1 定义业务逻辑组件接口
- APP免费
20.4.2 依赖注入DAO组件
- APP免费
20.4.3 业务逻辑组件中的异常处理
- APP免费
20.4.4 处理用户竞价
- APP免费
20.4.5 判断拍卖物品状态
- APP免费
20.4.6 事务管理
- APP免费
20.4.7 配置业务层组件
- APP免费
20.5 实现系统Web层
- APP免费
20.5.1 配置Struts2的核心Filter
- APP免费
20.5.2 处理用户登录
- APP免费
20.5.3 图形验证码
- APP免费
20.5.4 Web层的异常处理
- APP免费
20.5.5 登录控制
- APP免费
20.5.6 添加物品
- APP免费
20.5.7 处理用户竞价
- APP免费
20.6 使用SiteMesh页面装饰
- APP免费
20.6.1 在Struts2中整合SiteMesh页面装饰
- APP免费
20.6.2 定义页面装饰
- APP免费
20.7 本章小结
- APP免费
光盘说明
更新时间:2018-12-30 11:34:55