王朝百科
分享
 
 
 

Struts2.1权威指南

王朝百科·作者佚名  2010-07-02  
宽屏版  字体: |||超大  

Struts2.1权威指南

图书信息作者:李刚编著

出 版 社:电子工业出版社

出版时间: 2009-5-1

页数:788页

开本: 16开

I S B N : 9787121085925

定价:85.00元

作者简介李刚,从事近10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。疯狂Java实训营创立人,疯狂Java体系图书作者,曾兼任广东技术师范学院计算机科学系的兼职副教授。培训的学生已在华为、立信、普信,网易、电信盈科、中企动力等公司就职。 国内知名的高端IT技术作家,已出版《疯狂Java讲义》、《轻量级Java EE企业应用实战》、《疯狂Ajax讲义》、《Struts 2权威指南》、《Ruby On Rails敏捷开发最佳实践》、《Sprin9 2.0宝典》等著作。

内容简介本书是《Struts 2权威指南》的第二版,本书介绍的Struts 2是最新的Struts 2.1。

[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框架的权威参考。

前 言2007年,《Struts 2权威指南》第一版面市,作为国内第一本全面、深入介绍Struts 2的图书,带给广大学习者、开发者巨大的帮助,笔者也因此收到了100多封热情洋溢的读者来信,该书也因此获得了中国互动出版网(www.china-pub.com)2007年畅销排行榜第8位的好成绩,这也说明了Struts 2在国内开发行业的广泛应用。实际上,从Struts 2.0开始,许多软件开发公司纷纷离开原有的Struts 1.x和WebWork框架,改为使用Struts 2。

2009年1月,Struts 2再次发布了最新的稳定版:Struts 2.1,相对于Struts 2.0,Struts 2.1发生了较大的改变、并增加了大量新特性和新功能:例如新增了Convention插件和REST插件,并将原有的Ajax主题全部移入Dojo插件中……这些改变使得Struts 2更加成熟、稳定,而且更加简单、易用。尤其值得一提的是Struts 2新增的Convention插件和REST插件,它们可以完全实现类似Ruby on Rails的REST风格的URL,并允许使用“约定优于配置”的方式管理Action和Result Mapper,不仅不需要XML配置文件,连Annotation都可以省略,而且内建支持XML和JSON的序列化和反序列化,这些插件不仅极大地简化了Struts 2的应用开发,而且极大地丰富了Struts 2框架的功能。这些都将在本书中详细介绍,而且本书倒数第二章的综合案例也抛弃了原有的XML配置文件,改为基于Struts 2.1的Convention插件。

为什么写作本书

自从《Struts 2权威指南》面市以来,笔者几乎每天都会收到一些读者来信,他们都会向笔者表示感谢:感谢《Struts 2权威指南》给他们带来的巨大帮助,也有一些读者向笔者咨询学习、工作中遇到的难题,笔者总是尽心尽力予以解答。后来笔者干脆成立了疯狂Java联盟(http:// www.crazyit.org),供广大读者与笔者直接交流,以回赠广大读者的感激、爱护之情。

当开始写作《Struts 2权威指南》的第一版时,笔者曾希望:世界上第一本介绍Struts 2的图书是用中文写成的!《Struts 2权威指南》做到了这一点。当2009年1月13日Struts 2发布Struts 2.1的第一个正式版时(当时即将农历新年),笔者立即开始升级《Struts 2权威指南》,新年放假期间,笔者闭门不出,每天工作15小时左右,希望在第一时间将Struts 2.1最新功能带给国内开发者,用实际行动来为中国的软件业尽到自己的绵薄之力。

笔者始终相信一点:手比嘴高!举起手臂,手的高度会远远超过嘴巴的高度。一个真正的程序员,首先应该是能认真编码、踏实做事的人。所以我希望:打算阅读此书的朋友,一定是准备用手敲代码的人。如果你只是想“读”本书,不想动“手”实践,那么建议不要阅读本书。

本书有什么特点

本书继续保持《Struts 2权威指南》第一版的特色:看得懂,学得会,做得出!只要读者认真阅读此书,就会发现本书的语言非常地平实易懂,看完之后马上就可运用Struts 2投入实际开发。

本书为Struts 2.1所有知识点都配套了小案例让读者学以致用,然后详细介绍该知识点的各种选项和参数,再指出该知识点在实际开发中的应用场景,最后简要说明该知识点的底层运行机制。

除此之外,本书还有如下几个特色:

1.经验丰富,针对性强

作为一个多年的程序员,笔者积累了大量的实际开发经验和感悟。现在,笔者担任新东方的IT培训讲师,并且是多个公司的技术培训导师,同时兼任过广东技术师范学院计算机科学系的兼职副教授,感受到的是各种层次学习者在学习过程中的苦痛,因此针对性很强。

2.讲解具体,示范性强

书中通过大量的示范性实例(全书范例近百个),逐一、详细地讲解了Struts 2各知识点的用法,并细致地讲解每个用法的各种参数、选项,可以帮助读者从入门到精通。

3.配合案例,快速提高

本书最后配备了2个非常常见的案例,可以让读者在掌握前面的基础知识点的情况下,将所有知识融会贯通,把基础知识点应用到项目开发过程中。

本书写给谁看

本书适用于有较好的Java编程基础,有一定JSP、Servlet等Web编程基础或初步Java EE编程基础的读者。本书由浅入深、全面深入地介绍了Struts 2框架各方面的内容,既可以作为普通学习者学习Struts 2的教材,也可以作为实际企业开发的参考手册。

李刚

2009-3-5

目 录第1章 Struts 2概述 1

1.1 MVC思想概述 2

1.1.1 Web技术的发展 2

1.1.2 Model 1和Model 2 4

1.1.3 MVC思想及其优势 6

1.1.4 常用的MVC框架 7

1.2 Struts 2的起源和背景 8

1.2.1 Struts 1简介及存在的问题 9

1.2.2 WebWork简介 12

1.2.3 Struts 2起源 15

1.3 Struts 2体系介绍 16

1.3.1 Struts 2框架架构 16

1.3.2 Struts 2的配置文件 17

1.3.3 Strut 2的标签库 18

1.3.4 Struts 2的控制器组件 19

1.4 Struts 2与Struts 1的对比 20

1.5 WebWork和Struts 2对比 21

1.6 本章小结 22

第2章 Struts 2下的HelloWorld 23

2.1 下载和安装Struts 2框架 23

2.2 从用户请求开始 25

2.3 创建Struts 2的Web应用 27

2.3.1 创建Web应用 27

2.3.2 增加Struts 2功能 28

2.4 实现控制器 28

2.4.1 实现控制器类 29

2.4.2 配置Action 30

2.4.3 增加视图资源完成应用 30

2.5 改进控制器 32

2.5.1 实现Action接口 32

2.5.2 跟踪用户状态 33

2.5.3 添加处理信息 35

2.5.4 输出处理信息 37

2.6 改进视图组件 39

2.6.1 改善输出页面 39

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

2.7 完成程序国际化 42

2.7.1 定义国际化资源文件 42

2.7.2 加载资源文件 43

2.7.3 输出国际化信息 44

2.8 增加数据校验 46

2.8.1 继承ActionSupport 46

2.8.2 使用Struts 2的校验框架 49

2.9 本章小结 51

第3章 Struts 2基础 52

3.1 WebWork的MVC实现 52

3.1.1 WebWork的下载和安装 53

3.1.2 实现Action 53

3.1.3 配置Action 56

3.1.4 完成数据校验 58

3.1.5 完成应用流程 59

3.2 在Eclipse中开发Struts 2 60

3.2.1 创建Web应用 61

3.2.2 增加Struts 2支持 63

3.2.3 部署Struts 2应用 64

3.2.4 增加应用的Action 65

3.3 Struts 2的基本流程 66

3.3.1 核心控制器:FilterDispatcher 66

3.3.2 业务控制器 67

3.3.3 Struts 2的模型组件 67

3.3.4 Struts 2的视图组件 68

3.3.5 Struts 2的运行流程 68

3.4 Struts 2的基本配置 69

3.4.1 配置web.xml文件 69

3.4.2 struts.xml配置文件 71

3.4.3 struts.properties配置文件 74

3.4.4 struts.xml文件结构 78

3.5 本章小结 82

第4章 深入Struts 2 83

4.1 深入Struts 2的配置文件 83

4.1.1 Bean配置 84

4.1.2 常量配置 85

4.1.3 包配置 87

4.1.4 命名空间配置 89

4.1.5 包含配置 91

4.1.6 拦截器配置 91

4.2 Struts 2的Action 92

4.2.1 实现Action处理类 92

4.2.2 Action访问Servlet API 97

4.2.3 Action直接访问Servlet API 100

4.2.4 配置Action 103

4.2.5 配置Action的默认处理类 104

4.2.6 动态方法调用 105

4.2.7 为action元素指定method

4.2.7 属性 107

4.2.8 使用通配符 109

4.2.9 配置默认Action 115

4.3 管理处理结果 116

4.3.1 处理结果的改进 116

4.3.2 配置结果 117

4.3.3 Struts 2支持的处理结果

4.2.7 类型 118

4.3.4 plainText结果类型 120

4.3.5 redirect结果类型 123

4.3.6 redirectAction结果类型 124

4.3.7 动态结果 125

4.3.8 请求参数决定结果 126

4.3.9 全局结果 129

4.4 属性驱动和模型驱动 130

4.4.1 模型的作用 130

4.4.2 使用模型驱动 131

4.5 Struts 2的异常机制 134

4.5.1 Struts 2的异常处理哲学 135

4.5.2 声明式异常捕捉 136

4.5.3 输出异常信息 139

4.6 未知处理器 141

4.7 本章小结 143

第5章 Struts 2的类型转换 144

5.1 类型转换的意义 145

5.1.1 表现层数据处理 145

5.1.2 类型转换 145

5.2 Struts 2内建的类型转换器 149

5.3 基于OGNL的类型转换 151

5.4 自定义类型转换器 155

5.4.1 系统需求 155

5.4.2 实现类型转换器 157

5.4.3 局部类型转换器 159

5.4.4 全局类型转换器 161

5.4.5 基于Struts 2的类型转换器 163

5.4.6 数组属性的类型转换器 165

5.4.7 集合属性的类型转换器 168

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

5.5.1 指定集合元素的类型 170

5.5.2 为Set集合的元素指定

4.2.7 索引属性 172

5.6 类型转换中错误处理 174

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

5.6.2 处理类型转换错误 176

5.6.3 输出类型转换错误 176

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

5.7 本章小结 182

第6章 Struts 2的输入校验 183

6.1 输入校验概述 184

6.1.1 为什么需要输入校验 184

6.1.2 客户端校验 185

6.1.3 服务器端校验 187

6.1.4 类型转换和输入校验 191

6.2 基本输入校验 192

6.2.1 编写校验规则文件 192

6.2.2 国际化提示信息 195

6.2.3 使用客户端校验 197

6.3 校验器的配置风格 200

6.3.1 字段校验器配置风格 201

6.3.2 非字段校验器配置风格 201

6.3.3 短路校验器 203

6.3.4 校验顺序和短路 205

6.4 校验文件的搜索规则 205

6.5 内建校验器 208

6.5.1 注册校验器 208

6.5.2 必填校验器 210

6.5.3 必填字符串校验器 210

6.5.4 整数校验器 211

6.5.5 日期校验器 212

6.5.6 表达式校验器 213

6.5.7 字段表达式校验器 213

6.5.8 邮件地址校验器 214

6.5.9 网址校验器 215

6.5.10 Visitor校验器 216

6.5.11 转换校验器 219

6.5.12 字符串长度校验器 220

6.5.13 正则表达式校验器 221

6.6 基于Annotation的输入校验 221

6.7 手动完成输入校验 223

6.7.1 重写validate()方法 223

6.7.2 重写validateXxx()方法 225

6.7.3 Struts 2的输入校验流程 227

6.8 本章小结 228

第7章 上传和下载文件 229

7.1 文件上传的原理 230

7.1.1 表单元素的enctype属性 230

7.1.2 手动上传 233

7.1.3 使用上传框架完成上传 235

7.2 Struts 2的文件上传 241

7.2.1 Struts 2的文件上传支持 241

7.2.2 实现文件上传的Action 242

7.2.3 配置文件上传的Action 244

7.2.4 手动实现文件过滤 246

7.2.5 拦截器实现文件过滤 249

7.2.6 输出错误提示 250

7.2.7 文件上传的常量配置 252

7.3 使用Pell上传 252

7.4 同时上传多个文件 253

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

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

7.5 使用Struts 2控制文件下载 258

7.5.1 实现文件下载的Action 259

7.5.2 配置Action 260

7.5.3 下载前的授权控制 261

7.6 本章小结 263

第8章 Struts 2的国际化 264

8.1 程序国际化简介 265

8.1.1 程序国际化的意义 265

8.1.2 Java国际化的思路 265

8.1.3 Java支持的语言和国家 266

8.1.4 完成程序国际化 267

8.1.5 使用MessageFormat处理

8.1.5 带占位符的消息 269

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

8.2 Struts 2的国际化入门 271

8.2.1 加载全局资源文件 271

8.2.2 访问国际化消息 272

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

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

8.3.1 包范围资源文件 277

8.3.2 Action范围资源文件 279

8.3.3 临时指定资源文件 279

8.3.4 加载资源文件的顺序 281

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

8.4.1 Struts 2国际化的运行机制 282

8.4.2 创建下拉列表框 283

8.4.3 选择程序语言 286

8.5 本章小结 287

第9章 Struts 2的标签库 288

9.1 Struts 2标签库概述 289

9.1.1 标签的优势 289

9.1.2 Struts 2的标签分类 290

9.2 Struts 2标签入门 291

9.2.1 使用Struts 2标签的准备 291

9.2.2 Struts 2的OGNL表达式

9.2.2 语言 292

9.2.3 OGNL中的集合操作 295

9.2.4 访问静态成员 296

9.2.5 Lambda(λ)表达式 296

9.3 控制标签 297

9.3.1 if/elseif/else标签 297

9.3.2 iterator标签 298

9.3.3 append标签 300

9.3.4 generator标签 302

9.3.5 merge标签 304

9.3.6 subset标签 304

9.3.7 sort标签 307

9.4 数据标签 309

9.4.1 action标签 309

9.4.2 bean标签 311

9.4.3 date标签 313

9.4.4 debug标签 314

9.4.5 include标签 315

9.4.6 param标签 316

9.4.7 push标签 316

9.4.8 set标签 317

9.4.9 url标签 319

9.4.10 property标签 320

9.5 主题和模板 321

9.5.1 选择主题 321

9.5.2 自定义主题 323

9.6 表单标签 325

9.6.1 表单标签的通用属性 325

9.6.2 表单标签的name和

9.6.2 value属性 328

9.6.3 checkboxlist标签 328

9.6.4 combobox标签 331

9.6.5 doubleselect标签 331

9.6.6 head标签 334

9.6.7 optiontransferselect标签 334

9.6.8 select标签 336

9.6.9 radio标签 337

9.6.10 optgroup标签 338

9.6.11 token标签 340

9.6.12 updownselect标签 341

9.7 非表单标签 343

9.7.1 actionerror和actionmessage

9.7.1 标签 343

9.7.2 component标签 344

9.8 本章小结 347

第10章 Struts 2的拦截器 348

10.1 理解拦截器 349

10.1.1 理解DRY规则 349

10.1.2 拦截器的意义 350

10.1.3 拦截器的实现原理 352

10.1.4 拦截器和AOP的关系 356

10.1.5 拦截器在Struts 2中的作用 357

10.2 拦截器配置初步 359

10.2.1 配置拦截器 359

10.2.2 使用拦截器 361

10.2.3 配置默认拦截器 362

10.3 Struts 2内建的拦截器 365

10.3.1 Struts 2内建的拦截器 365

10.3.2 struts-default.properties里

10.3.2 配置的拦截器 366

10.4 开发自己的拦截器 370

10.4.1 实现拦截器类 371

10.4.2 使用拦截器 372

10.4.3 拦截器和Struts 2插件的

10.4.3 关系 374

10.5 深入拦截器编程 375

10.5.1 拦截方法的拦截器 375

10.5.2 拦截器的执行顺序 378

10.5.3 拦截结果的监听器 380

10.5.4 覆盖拦截器栈里特定

10.5.4 拦截器的参数 381

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

10.6.1 实现拦截器类 383

10.6.2 配置权限控制拦截器 384

10.7 本章小结 386

第11章 Struts 2的Ajax支持 387

11.1 Ajax概述 388

11.1.1 Ajax的起源和变革 388

11.1.2 Ajax的核心技术 391

11.2 Struts 2提供的Ajax支持 393

11.3 基于Dojo的异步表单 397

11.3.1 安装Dojo插件 398

11.3.2 定义异步表单 398

11.3.3 实现Action 400

11.3.4 实现服务器响应页面 402

11.4 基于Dojo的pub-sub事件

11.4 模型 403

11.4.1 pub-sub的原理 404

11.4.2 pub-sub的示例 405

11.4.3 阻止请求 407

11.5 基于Dojo的Ajax标签 407

11.5.1 div标签 407

11.5.2 submit和a标签 414

11.5.3 autocompleter标签 419

11.5.4 tabbedpanel标签 426

11.5.5 datetimepicker 430

11.5.6 tree和treenode 432

11.5.7 textarea 435

11.5.8 bind 436

11.6 基于JSON插件的Ajax

11.6 实现 438

11.6.1 JSON的基本知识 438

11.6.2 安装Struts 2的JSON插件 441

11.6.3 实现Action逻辑 441

11.6.4 实现JSP页面 443

11.7 本章小结 446

第12章 Struts 2的REST支持 447

12.1 Codebehind插件和零配置 448

12.1.1 自动搜索Action 448

12.1.2 使用Annotation指定命名

12.1.2 空间、父包和结果映射 449

12.2 Convention插件和零配置 452

12.2.1 搜索Action 453

12.2.2 按约定映射Action 454

12.2.3 按约定映射Result 456

12.2.4 Action链的约定 459

12.2.5 自动重加载映射 461

12.3 Convention插件的相关常量 461

12.4 Convention的Annotation 462

12.4.1 Action配置相关的

12.4.1 Annotation 463

12.4.2 Result配置相关的

12.4.1 Annotation 464

12.4.3 包和命名空间相关的

12.4.1 Annotation 466

12.4.4 异常处理相关的Annotation 466

12.4.5 拦截器配置相关的

12.4.1 Annotation 468

12.5 REST简介 468

12.5.1 资源和标识符 469

12.5.2 操作资源的方式 470

12.6 Struts 2的REST支持 471

12.6.1 RestActionMapper简介 471

12.6.2 安装REST插件 472

12.6.3 实现支持REST的

12.6.3 Action类 473

12.6.4 实现视图层 478

12.7 本章小结 481

第13章 使用FreeMarker作为

第13章 表现层 482

13.1 体验FreeMarker 483

13.1.1 下载和安装FreeMarker 483

13.1.2 在Java程序中使用

13.1.2 FreeMarker 483

13.1.3 在Web应用中使用

13.1.2 FreeMarker 485

13.2 FreeMarker的模板文件 489

13.2.1 模板结构 489

13.2.2 FTL指令规则 490

13.2.3 插值规则 490

13.3 表达式 492

13.3.1 直接指定值 492

13.3.2 输出变量值 494

13.3.3 字符串操作 496

13.3.4 集合连接运算符 497

13.3.5 Map连接运算符 497

13.3.6 算术运算符 498

13.3.7 比较运算符 499

13.3.8 逻辑运算符 499

13.3.9 内建函数 499

13.3.10 空值处理运算符 500

13.3.11 运算符优先级 500

13.4 FreeMarker的常用指令 501

13.4.1 if指令 501

13.4.2 switch、case、default、

13.4.2 break指令 502

13.4.3 list、break指令 502

13.4.4 include指令 503

13.4.5 import指令 503

13.4.6 noparse指令 503

13.4.7 escape、noescape指令 504

13.4.8 assign指令 505

13.4.9 setting指令 506

13.4.10 macro、nested、return指令 506

13.5 使用FreeMarker作为

13.5 Struts 2的视图技术 509

13.5.1 在FreeMarker模板中

13.5.1 使用Struts 2标签 509

13.5.2 使用Freemarker Result 512

13.5.3 解析模板中的变量 514

13.5.4 访问Servlet/JSP范围的值 516

13.6 本章小结 517

第14章 整合Spring 518

14.1 Spring简介 519

14.1.1 Spring的起源和核心 519

14.1.2 使用Spring的IoC容器 521

14.2 Struts 2插件 524

14.2.1 插件概述 524

14.2.2 插件开发概述 526

14.3 使用Spring插件完成整合 527

14.3.1 整合Spring前的准备工作 528

14.3.2 整合Spring的思考 531

14.4 让Spring管理控制器 532

14.4.1 整合流程 532

14.4.2 从页面请求开始 533

14.4.3 实现控制器逻辑 533

14.4.4 实现业务逻辑 535

14.5 使用自动装配 537

14.5.1 指定自动装配 537

14.5.2 修改配置文件 538

14.5.3 改变自动装配策略 539

14.6 本章小结 540

第15章 整合JSF 541

15.1 JSF简介 541

15.1.1 JSF概述 542

15.1.2 JSF和Struts 2的对比 542

15.2 使用MyFaces 543

15.2.1 下载和安装MyFaces 543

15.2.2 从输入页面开始 545

15.2.3 在Web应用中配置MyFaces 547

15.2.4 实现后台Bean 548

15.2.5 定义导航规则 549

15.3 安装JSF插件 551

15.4 使用JSF插件 552

15.4.1 实现业务逻辑组件 553

15.4.2 列出全部图书 556

15.4.3 添加/修改图书 558

15.5 整合JSF的思考 563

15.6 本章小结 564

第16章 整合SiteMesh 565

16.1 SiteMesh简介 565

16.1.1 SiteMesh概述 566

16.1.2 下载和安装SiteMesh 567

16.1.3 定义装饰器页面 569

16.1.4 定义原始页面 570

16.1.5 更复杂的装饰器页面 572

16.2 使用SiteMesh插件 575

16.2.1 安装SiteMesh插件 575

16.2.2 在Struts 2中使用SiteMesh 577

16.3 本章小结 579

第17章 整合JasperReports 580

17.1 JasperReports简介 581

17.1.1 下载和安装JasperReports 581

17.1.2 JasperReports初探 582

17.1.3 JasperReports的开发流程 588

17.1.4 解决PDF报表的中文问题 589

17.2 动态报表 590

17.2.1 带参数的报表 590

17.2.2 带查询的报表 594

17.2.3 以VO集合作为数据源的

17.2.3 动态报表 600

17.3 使用iReport设计报表 605

17.3.1 下载和安装iReport 605

17.3.2 使用iReport 607

17.3.3 建立数据源 608

17.3.4 设计报表布局 611

17.4 安装JasperReports插件 614

17.5 使用JasperReports报表 614

17.5.1 创建生成报表的Action 615

17.5.2 配置生成JasperReports

17.2.3 报表的Action 616

17.5.3 生成JasperReports报表 617

17.6 本章小结 618

第18章 整合JFreeChart 619

18.1 JFreeChart简介 620

18.1.1 JFreeChart的下载和安装 620

18.1.2 使用JFreeChart 621

18.1.3 JFreeChart开发步骤 623

18.2 JFreeChart的常用统计图表 624

18.2.1 柱状图 625

18.2.2 折线图 629

18.2.3 时间顺序图 630

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

18.3 统计图 633

18.4 安装JFreeChart插件 638

18.5 在Struts 2应用中使用

18.5 JFreeChart 639

18.5.1 创建Action类 639

18.5.2 配置Action 641

18.6 本章小结 642

第19章 整合Hibernate 643

19.1 Hibernate概述 644

19.1.1 Hibernate的作用 644

19.1.2 Hibernate的优势 646

19.2 Hibernate开发入门 646

19.2.1 Hibernate下载和安装 646

19.2.2 使用Hibernate保存记录 647

19.2.3 使用Hibernate查询记录 652

19.3 Struts 2整合Hibernate的思考 654

19.3.1 自定义的整合方案 654

19.3.2 整合方案的实现策略 656

19.4 整合示例 656

19.4.1 持久层设计 656

19.4.2 DAO层设计 660

19.4.3 业务逻辑层设计 663

19.4.4 初始化组件工厂 665

19.4.5 控制器实现 666

19.5 整合后的思考和Spring框架 668

19.6 本章小结 669

第20章 “零配置”案例:注册

第20章 登录系统 670

20.1 系统概述 671

20.1.1 系统功能简介 671

20.1.2 系统总体设计 671

20.2 实现Hibernate持久层 672

20.2.1 编写持久化PO类 672

20.2.2 编写映射文件 673

20.3 实现DAO层 674

20.3.1 管理SessionFactory 674

20.3.2 编写DAO接口 675

20.3.3 实现DAO组件 677

20.3.4 配置DAO组件 679

20.4 实现业务逻辑层 679

20.4.1 定义业务逻辑组件接口 679

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

20.4.3 配置业务逻辑组件 682

20.5 使用Struts 2 683

20.5.1 整合Struts 2和Spring 683

20.5.2 处理登录 685

20.5.3 图形验证码 689

20.5.4 使用Ajax验证用户名 692

20.5.5 注册新用户 696

20.6 使用SiteMesh装饰页面 699

20.7 本章小结 700

第21章 电子拍卖系统 701

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

21.1.1 系统功能简介 702

21.1.2 系统架构设计 702

21.1.3 相关技术介绍 703

21.2 持久层设计 706

21.2.1 系统实体 706

21.2.2 系统E-R图和数据表 707

21.2.3 实现Hibernate PO 709

21.2.4 管理SessionFactory 718

21.3 实现系统DAO层 720

21.3.1 DAO的基础配置 721

21.3.2 实现系统DAO组件 721

21.3.3 配置系统DAO组件 728

21.4 实现业务逻辑层 729

21.4.1 定义业务逻辑组件接口 730

21.4.2 依赖注入DAO组件 732

21.4.3 业务逻辑组件中的异常

21.4.3 处理 733

21.4.4 处理用户竞价 735

21.4.5 判断拍卖物品状态 737

21.4.6 事务管理 740

21.4.7 配置业务层组件 741

21.5 实现系统Web层 744

21.5.1 配置Struts 2的核心Filter 744

21.5.2 处理用户登录 745

21.5.3 图形验证码 749

21.5.4 Web层的异常处理 750

21.5.5 登录控制 751

21.5.6 添加物品 753

21.5.7 处理用户竞价 760

21.6 使用SiteMesh页面装饰 766

21.6.1 在Struts 2中整合SiteMesh

21.6.1 页面装饰 766

21.6.2 定义页面装饰 767

21.7 本章小结 770

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有