本书是一本应用教程,通过大量实例介绍Struts 2框架应用的基本思想、方法和技术,同时配备了相应的实践环节,巩固Struts 2应用开发的方法和技术,力图达到“做中学,学中做”。
全书共10章,内容包括Struts 2入门、Struts 2的Action、类型转换、拦截器、表达式语言OGNL、标签库、输入校验、国际化、文件上传和下载以及电子商务平台的设计与实现等重要内容。书中实例侧重实用性和启发性,趣味性强,分布合理,通俗易懂,使读者能够快速掌握Struts 2框架应用的基础知识、编程技巧以及完整的开发体系,为实际应用打下坚实的基础。
尽管已经有许多与Struts 2框架有关的书籍,但大部分书籍非常注重知识的系统性,使得知识体系结构过于全面、庞大,不太适合作为高校计算机相关专业的教材。本书的重点不是简单地介绍Struts 2框架的基础知识,而是大量的实例与实践环节。读者通过本书可以快速地掌握Struts 2框架技术,提高开发Struts 2应用的能力。全书共10章,具体内容如下:
第1章介绍MVC的设计思想,讲解Struts 2应用开发框架的构建。
第2章讲解Action的编写方式、接收用户数据的方式、在Action中访问Servlet API以及Action中常见的结果类型,是本书的重点内容之一。
第3章讲解Struts 2的类型转换,包括内置的类型转换器和自定义类型转换器。
第4章讲解Struts 2的拦截器,包括内置的拦截器和自定义拦截器。
第5章讲解表达式语言OGNL,包括OGNL语法基础、值栈的概念以及OGNL表达式的应用。
第6章讲解Struts 2标签,包括非UI标签和UI标签,是本书的重点内容之一。
第7章讲解Struts 2框架的输入校验体系,包括手动编程校验和校验框架校验。
第8章讲解Struts 2国际化的实现方法,包括JSP页面国际化、校验信息国际化以及Action信息国际化等内容。
第9章讲解使用Struts 2框架进行文件的上传与下载,包括单文件上传、多文件上传以及文件下载。
第10章是本书的重点内容之一,将前面章节的知识进行综合,讲解使用Struts 2框架来开发一个Web应用(电子商务平台)的过程。
为了便于教学,本教材配有教学课件、源代码以及实践环节与课后习题的参考答案,读者可从清华大学出版社的网站(http://www.tup.com.cn)免费下载。
由于编者水平有限,书中难免会有不足之处,敬请广大读者批评指正。
编者
2015年8月
第1章Struts 2入门1
1.1MVC模式1
1.2Struts 2的体系结构2
1.3Struts 2的工作环境3
1.3.1Struts 2的下载与安装4
1.3.2使用Eclipse开发Struts 2的Web应用4
1.3.3使用MyEclipse开发Struts 2的Web应用10
1.4第一个Struts 2应用14
1.4.1用户请求页面14
1.4.2Action实现15
1.4.3配置Action15
1.4.4发布并运行Web应用16
1.4.5struts.xml配置中的包属性介绍19
1.5实践环节19
1.6本章小结19
习题120第2章Struts 2的Action21
2.1Action的创建与配置21
2.1.1Action的创建方式21
2.1.2Action的配置23
2.1.3DMI以及通配符24
2.1.4实践环节26
2.2Action接收请求参数26
2.2.1使用Action属性接收参数26
2.2.2使用DomainModel接收参数27
2.2.3使用ModelDriven<T>接口接收参数29
2.2.4实践环节29
2.3Action访问Servlet API30
2.3.1通过ActionContext30
2.3.2实现RequestAware、SessionAware和ApplicationAware接口32
2.3.3通过ServletActionContext33
2.3.4实现ServletRequestAware接口34
2.3.5实践环节35
2.4struts.xml文件中的include及constant36
2.4.1include的配置36
2.4.2constant的配置36
2.5Action中常见的结果类型37
2.5.1chain类型37
2.5.2redirectAction类型38
2.5.3redirect类型39
2.5.4dispatcher类型39
2.5.5全局result39
2.5.6实践环节40
2.6包的继承41
2.7本章小结42
习题242第3章Struts 2的类型转换43
3.1类型转换的意义43
3.2Struts 2内置的类型转换器45
3.3自定义类型转换器47
3.3.1实现类型转换器50
3.3.2注册类型转换器52
3.3.3实践环节53
3.4数组属性的类型转换器53
3.5集合属性的类型转换器56
3.6本章小结58
习题358第4章Struts 2的拦截器59
4.1拦截器概述59
4.1.1拦截器的原理59
4.1.2拦截器与过滤器的区别59
4.1.3Struts 2内置的拦截器60
4.2拦截器的配置61
4.2.1配置拦截器62
4.2.2拦截器栈63
4.2.3默认拦截器63
4.2.4实践环节64
4.3自定义拦截器64
4.3.1实现Interceptor接口65
4.3.2继承AbstractInterceptor类67
4.3.3继承MethodFilterInterceptor类67
4.3.4实践环节69
4.4使用自定义拦截器完成权限验证71
4.5本章小结74
习题474第5章表达式语言OGNL76
5.1OGNL简介76
5.2OGNL基础76
5.2.1OGNL上下文78
5.2.2值栈81
5.2.3OGNL的访问83
5.2.4实践环节85
5.3OGNL基本语法85
5.3.1常量86
5.3.2操作符86
5.3.3OGNL表达式87
5.3.4实践环节91
5.4本章小结96
习题596第6章Struts 2中的标签97
6.1标签库概述97
6.1.1标签的分类97
6.1.2标签的使用97
6.1.3标签的语法97
6.2数据标签98
6.2.1action标签99
6.2.2bean标签102
6.2.3date标签103
6.2.4debug标签104
6.2.5include标签105
6.2.6param标签106
6.2.7push标签106
6.2.8set标签107
6.2.9url标签108
6.2.10property标签109
6.2.11实践环节109
6.3流程控制标签110
6.3.1if/elseif/else标签110
6.3.2iterator标签111
6.3.3append标签113
6.3.4generator标签114
6.3.5merge标签115
6.3.6subset标签115
6.3.7sort标签117
6.3.8实践环节118
6.4表单标签118
6.4.1表单标签的通用属性118
6.4.2checkboxlist标签119
6.4.3combobox标签121
6.4.4doubleselect标签122
6.4.5optiontransferselect标签123
6.4.6select标签125
6.4.7optgroup标签126
6.4.8radio标签127
6.4.9实践环节128
6.5非表单标签129
6.6本章小结131
习题6131第7章Struts 2的输入校验132
7.1输入校验概述132
7.1.1客户端校验132
7.1.2服务器端校验136
7.2手动编程校验136
7.2.1重写validate()方法136
7.2.2重写validateXxx()方法139
7.2.3输入校验的流程140
7.2.4实践环节140
7.3校验框架校验141
7.3.1Struts 2内置的校验器141
7.3.2常用内置校验器的配置142
7.3.3校验Action中所有与execute签名相同的方法143
7.3.4校验Action中某个与execute签名相同的方法145
7.3.5校验文件搜索顺序146
7.3.6实践环节146
7.4本章小结146
习题7147第8章Struts 2的国际化148
8.1程序国际化概述148
8.1.1Java国际化的思想148
8.1.2Java支持的语言和国家149
8.1.3Java程序国际化150
8.1.4带占位符的国际化信息152
8.1.5实践环节152
8.2国际化的步骤153
8.2.1Struts 2中加载全局资源文件153
8.2.2国际化信息输出153
8.2.3实践环节156
8.3资源文件的加载方式157
8.3.1包范围资源文件157
8.3.2Action范围资源文件157
8.3.3临时指定资源文件157
8.4用户自定义切换语言示例158
8.5本章小结162
习题8163第9章文件的上传与下载164
9.1Struts 2文件上传164
9.1.1基于表单的文件上传164
9.1.2Struts 2单文件上传165
9.1.3拦截器实现文件过滤168
9.1.4文件上传的常量配置169
9.1.5Struts 2多文件上传169
9.1.6实践环节172
9.2Struts 2文件下载172
9.3本章小结176
习题9176第10章电子商务平台的设计与实现178
10.1系统设计178
10.1.1系统功能需求178
10.1.2系统模块划分178
10.2数据库设计179
10.2.1数据库概念结构设计179
10.2.2数据逻辑结构设计181
10.2.3创建数据表182
10.3系统管理185
10.3.1导入相关的jar包185
10.3.2JSP页面管理185
10.3.3包管理189
10.3.4配置文件管理189
10.4组件设计195
10.4.1过滤器195
10.4.2拦截器195
10.4.3验证码196
10.4.4数据库操作196
10.5后台管理子系统的实现211
10.5.1Action的实现212
10.5.2管理员登录218
10.5.3添加商品219
10.5.4查询商品221
10.5.5修改商品223
10.5.6删除商品226
10.5.7订单管理227
10.5.8用户管理228
10.5.9公告管理229
10.5.10退出系统232
10.6前台电子商务子系统的实现232
10.6.1Action的实现233
10.6.2导航栏239
10.6.3销售排行243
10.6.4人气排行243
10.6.5最新商品243
10.6.6公告栏243
10.6.7用户注册243
10.6.8用户登录243
10.6.9商品详情244
10.6.10关注商品246
10.6.11购物车246
10.6.12下单249
10.6.13用户中心251
10.7本章小结255
参考文献256