前言
Struts框架是全世界第一个MVC框架,发展至今有多年的历史,一直备受开发人员热捧。但是随着时间的流逝,Struts框架暴露出许多的缺陷,这些缺陷一直困挠着大量的开发人员,许多开发人员不得不选择其他MVC框架。所幸的是,Struts 2框架横空问世了。Struts 2框架整合了两个非常优秀的MVC框架:Struts和WebWork。
Struts 2框架继承了Struts和WebWork两个框架的易用性,其功能相比Struts和WebWork来说要更加强大。Struts 2框架利用了WebWork的拦截器机制,从而使Struts 2具有高度可扩展性。Struts 2的开发团队由原有的Struts和WebWork两个团队组成,大大加强了Struts 2开发团队力量。Struts 2从诞生至今以其功能的强大性和易用性吸引了大量Java Web开发人员的眼球。目前大量原有的Struts和WebWork开发项目也都转入使用Struts 2框架开发。相信随着Struts 2的发展,Struts 2最终将取代Struts框架成为开发人员的首选MVC开发框架。
本书重点介绍了Struts 2框架的核心部分以及Struts 2框架与其他框架的整合。核心部分介绍了Struts 2的类型转换、输入校验、拦截器、国际化、标签库以及Struts 2的Ajax支持。书中通过实例来讲解知识点,使读者学习起来不会枯燥,更容易理解。同时本书介绍了Struts 2框架与其他框架的整合功能,如整合报表工具JasperReports、统计图表工具JFreeChart、持久层框架Hibernate以及Spring框架等。本书深入浅出,内容丰富,既可以作为初学者的入门指南,也可以作为开发人员的案头参考书。
本书特点
1. 实例经典,内容丰富
每个知识点都通过一个配套的案例展开讲述。最后还提供了几个开发常用的系统模块,如登录系统、用户管理系统。
2. 取材广泛,内容充实
笔者在讲解每一个知识点时都会考虑如何组织实例代码。这些实例代码大部分都是在项目中常用的。这些实例都能将该知识点很好地组织起来并运用到实际项目中。
3. 讲解通俗,步骤详细
本书通过对话形式展开论述,讲解通俗易懂。读者只要按照开发步骤来编写程序,就能很快地掌握Struts 2框架的使用。
4. 专业知识,抓住主线
本书对于Struts 2的类型转换、输入校验、拦截器、国际化、标签库等重点内容采用了大量的案例进行讲述。
5. 读者服务,在线交流
读者可以登录融智科技的读者交流论坛(www.rzchina.net),并在该论坛提出学习中遇到的困难,及对本书的意见和建议。笔者将在第一时间为读者作出解答。
本书内容
第1章以一个登录案例为例,介绍了使用Model 1模式和Model 2模式开发的区别。介绍了如何使用MVC设计模式来改写登录案例,以及MVC设计模式的优点。介绍了常用的MVC框架,其中详细地介绍了Struts 1框架。通过下载和安装Struts 1框架,并完成基于Struts 1框架的登录案例。也介绍了如何在Eclipse中新建Web项目、整合Tomcat服务器以及通过Eclipse的插件来为Web应用添加Struts 1框架支持。并详细介绍如何在Eclipse中添加ActionForm、Action以及部署项目。
第2章介绍了Struts 1存在的问题,并介绍了Struts 2的起源。详细介绍了如何下载及安装Struts 2框架,并通过实例介绍了如何创建基于Struts 2的项目。还介绍了如何通过Eclipse来为项目添加Struts 2支持以及如何添加控制器以及struts.xml。简单介绍了如何完成输入校验和程序国际化,这部分的知识将在后面的章节中进行详细的介绍并说明,这里只是给读者一个感性的认识。
第3章详细地介绍了为什么要进行类型转换以及如何进行类型转换。介绍了如何通过OGNL的DefaultTypeConverter类和Struts的StrutsTypeConverter类进行类型转换。详细介绍了局部类型转换和全局类型转换的使用方法以及类型转换错误信息的处理和国际化类型转换和数据校验是紧密结合的,下一章将结合类型转换来讲解数据校验,因此一定要弄懂类型转换的基础知识。
第4章介绍了什么是输入校验,为什么要进行输入校验。介绍了输入校验的两种实现方式:一种是客户端校验;另一种是服务器端校验。详细介绍了如何通过JavaScript代码来实现客户端校验。同样对于服务器端校验展开了详细的介绍和说明。介绍了如何通过addActionError()方法和addFieldError()方法来添加校验错误提示信息。最后介绍了如何实现动态方法调用以及如何校验动态方法。本章的输入校验都是通过手动编写校验代码来实现的,在下一章将介绍如何通过Struts 2提供的校验框架来完成校验。
第5章介绍了使用Struts 2校验框架的好处以及编写校验规则文件的方法。详细介绍了近年来各种校验器的配置风格。介绍了Struts 2中有哪些内建校验器,以及这些校验器分别实现哪些校验功能。也介绍了如何运用这些内建校验器来完成输入校验。同时还介绍了如何添加客户端校验以及实现国际化。最后介绍了如何实现校验短路、校验规则和文件搜索规则。
第6章介绍了代理模式以及动态代理模式,为学习拦截器打下牢固基础。然后介绍了什么是拦截器,以及拦截器的实现原理。重点介绍了如何定义一个拦截器类,配置拦截器以及使用拦截器。还介绍了拦截器的深入知识,如传递参数、配置拦截器栈、拦截器执行顺序、方法过滤、拦截结果监听器。简单介绍了Struts 2中内建的拦截器,以及这些拦截器的配置。本章最后通过一个案例来演示如何通过拦截器来实现权限控制。
第7章介绍了如何下载并安装Common-FileUpload框架以及COS框架,如何分别通过这两个框架实现文件上传。重点介绍了如何基于Struts 2完成文件下载,并介绍了一些常用的配置,如配置文件保存目录、实现文件过滤、输出错误提示。还介绍了如何使用数组和List实现上传多个文件。本章还介绍了如何通过Struts 2的文件下载支持来实现文件下载,并通过结合拦截器实现了下载权限控制。
第8章介绍了国际化实现原理,分别介绍了资源文件的命名规则、Java所有支持的国家与地区名、语言名及其代码。并介绍了如何完成Java程序的国际化,以及如何通过参数为占位符赋值。详细介绍了JSP页面国际化的两种访问资源文件方式,以及加载资源文件顺序。还介绍了Action中访问国际化资源的3种方式,以及这3类资源文件加载的顺序。本章最后通过一个用户自行选择语言环境的示例,分别介绍了如何通过Action以及Struts 2的i18n拦截器来设置当前默认语言环境。
第9章介绍了使用标签的优势,以及如何使用Struts 2的标签库和Struts 2标签分类。本章还介绍了基本OGNL表达式,为后面标签的使用打下基础。本章详细介绍了Struts 2中常用的逻辑控制标签、数据访问标签以及UI标签。对于每个标签的使用都配置了大量的示例来讲解。
第10章介绍了什么是Ajax,以及Ajax应用相对于传统Web应用的优势,并介绍了Ajax的技术组成。通过实例演示了如何使用传统Web应用实现用户登录以及使用Ajax技术实现用户登录,从而体现Ajax技术的优势所在。本章还介绍了如何基于DWR开发Ajax应用,以及在Struts 2中通过整合DWR来完成Ajax表单输入校验。最后还介绍了如何在Struts 2中使用JSON插件来完成Ajax交互。
第11章介绍了如何通过JFreeChart生成各种统计图表,如饼图、柱状图、折线图、面积图以及层叠区域图等。并介绍了如何设置图表中的属性以达到需要的效果。同时还介绍了如何在网页中生成和统计图表。最后介绍了如何整合Struts 2以及JFreeChart,并通过实例介绍了如何在Struts 2应用中生成统计图表并显示出来。
第12章介绍了JasperReports和iReport的下载和安装,以及如何手动地设计报表和编译、填充、导出不同格式的报表。重点介绍了使用iReport设计报表,其中介绍了如何导出PDF文件格式的报表以及解决其中文无法显示问题。简单介绍了动态报表,如带查询的报表、带参数的报表。最后介绍了如何在Struts 2中整合JasperReports来生成报表。
第13章介绍了什么是ORM,以及Hibernate框架的优势。通过实例介绍了如何配置Hibernate配置文件以及映射文件,并详细介绍了如何通过Hibernate实现数据的新增、删除修改、查询操作。本章重点介绍了Struts 2整合Hibernate开发,详细分析了整合策略,并通过分层的思想来完成应用开发。通过Struts 2的Action调用业务逻辑组件,而业务逻辑组件调用DAO组件,DAO组件中封装了Hibernate持久化访问数据库操作,从而大大降低了组件之间的耦合度。
第14章介绍了Spring框架的优势,以及Spring的IoC应用。本章还介绍了Spring的依赖注入,分别介绍了通过Set方法注入依赖和使用构造方法注入依赖等。本章还介绍了Spring的自动装配,并通过示例来演示不同类型的自动装配。本章重点介绍了Struts 2整合Spring开发,通过登录案例演示了Struts 2和Spring的整合。最后通过整合Struts 2、Hibernate以及Spring框架完成了产品管理应用开发。
第15章介绍了通过基于Struts 2、Spring和Hibernate框架来开发注册登录系统。在开发系统中,充分地利用J2EE分层的思想。通过Struts 2框架负责与用户进行交互,并通过业务逻辑组件完成业务逻辑判断。通过Struts 2整合Spring,从而为Struts 2中的Action注入业务逻辑组件。同时整合Hibernate框架进行持久化访问操作。本系统中还使用了Struts 2的JSON插件来完成Ajax交互,从而实现异步的检测用户名是否占用。本系统还使用了图形验证码,从而防止恶意用户的侵入,增强系统的安全性。
第16章重点介绍了通过基于Struts 2、Spring和Hibernate框架来开发用户管理系统。在开发系统中,充分地利用J2EE分层的思想。通过Struts 2框架负责与用户进行交互,并通过业务逻辑组件完成业务逻辑判断。通过Struts 2整合Spring,从而为Struts 2中的Action注入业务逻辑组件。同时整合Hibernate框架进行持久化访问操作。通过用户管理系统可以查看所有的用户信息,并对注册用户进行删除以及更新、添加等其他操作。
本书适合的读者
本书面向所有进行Java Web开发的初学者或者由Struts框架转向Struts 2框架开发的读者。本书力求以全面的知识及丰富的实例来指导读者透彻学习Struts 2框架技术。
如果您是开发Java Web应用的初学者,建议按照本书的先后顺序来学习;如果您已经有了足够的开发经验,只是对Struts 2的某些技术感兴趣,可以选择阅读相关章节,把本书作为随时供翻阅的参考资料。
本书的作者
本书主要由卜炟编著,其他参与编著和资料整理的人员有冯华君、刘博、刘燕、叶青、张军、张立娟、张艺、彭涛、徐磊、戎伟、朱毅、李佳、李玉涵、杨利润、杨春娇、武鹏、潘中强、王丹、王宁、王西莉、石淑珍、程彩红、邵毅、郑丹丹、郑海平、顾旭光。
编者