Struts 2技术详解:基于WebWork核心的MVC开发与实践
基本信息
编辑推荐
Struts 2框架是Struts 1.X的替代版本,Struts 2框架整合了Struts 1.X框架和WebWork框架的优点。书中结合Struts 2框架的技术特点,从最基础的框架处理机制讲起,介绍了Struts 2框架的核心组件和核心处理机制,并介绍了拦截器、国际化、输入校验、类型转换等Struts 2关键技术,同时介绍了如何在Struts 2框架中整合其他开源技术。 本书非常适合有过Struts 1.X和WebWork开发经验的读者阅读。
内容简介回到顶部↑
struts 2框架是struts 1.x的替代版本,struts 2框架整合了struts 1.x框架和webwork框架的优点。相对struts 1.x,struts 2已经有了非常大的改变,去掉了actionform,降低了框架组件之间的耦合性,struts 2的action只是普通的java类(pojo),给模块测试工作带来了极大的方便。struts 2提供了强大的整合能力,支持多种返回结果类型,改进了struts 1.x的标签库,引入ognl表达式和值栈的概念,给开发者带来了更好的体验。
本书结合struts 2框架的技术特点,从最基础的框架处理机制讲起。介绍了struts 2框架的核心组件和核心处理机制,并介绍了拦截器、国际化、输入校验、类型转换等struts 2关键技术,同时介绍了如何在struts 2框架中整合其他开源技术。
本书非常适合有过struts 1.x和webwork开发经验的读者,以及java web开发的初学者,对于web高级开发者,也是一本非常好的参考书。
本书结合struts 2框架的技术特点,从最基础的框架处理机制讲起。介绍了struts 2框架的核心组件和核心处理机制,并介绍了拦截器、国际化、输入校验、类型转换等struts 2关键技术,同时介绍了如何在struts 2框架中整合其他开源技术。
本书非常适合有过struts 1.x和webwork开发经验的读者,以及java web开发的初学者,对于web高级开发者,也是一本非常好的参考书。
作译者回到顶部↑
目录回到顶部↑
第一篇 struts 2零基础详解
第1章 struts 2概述
1.1 mvc介绍
1.1.1 web技术发展
1.1.2 mvc设计模式
1.1.3 mvc的处理过程
1.1.4 mvc的优点
1.1.5 mvc的适用范围
1.1.6 model 1和model 2体系介绍
1.2 struts 1简介
1.2.1 struts 1框架介绍
1.2.2 web.xml配置文件
1.2.3 struts-config.xml配置文件
1.2.4 action和actionform
1.2.5 struts 1处理过程
1.2.6 struts 1的优点
1.2.7 struts 1的缺点
1.3 webwork简介
1.3.1 webwork框架
1.3.2 webwork的特性
第1章 struts 2概述
1.1 mvc介绍
1.1.1 web技术发展
1.1.2 mvc设计模式
1.1.3 mvc的处理过程
1.1.4 mvc的优点
1.1.5 mvc的适用范围
1.1.6 model 1和model 2体系介绍
1.2 struts 1简介
1.2.1 struts 1框架介绍
1.2.2 web.xml配置文件
1.2.3 struts-config.xml配置文件
1.2.4 action和actionform
1.2.5 struts 1处理过程
1.2.6 struts 1的优点
1.2.7 struts 1的缺点
1.3 webwork简介
1.3.1 webwork框架
1.3.2 webwork的特性
前言回到顶部↑
Struts 2框架作为Struts 1.X框架的替代技术,相对Struts 1.X来说,有着本质上的改变,Struts 2框架是从WebWork框架发展而来的。Struts 1.X已经成为Java Web开发中应用最广泛的MVC框架,被广大的程序员所接受。随着Web技术的发展,Struts 1.X越来越难以适应,主要体现在支持视图技术单一、难于测试性、庞大的配置文件和大量的ActionForm类,给项目开发的管理维护带来了困难。.
Struts 2框架技术整合了Struts 1.X和WebWork的优点,Struts 2框架最大的特点就是其简单性,引入了OGNL表达式和值栈的概念,可以使开发者使用简单的代码实现复杂的数据访问;Action实现类就是一个标准的Java类(POJO),这使得测试工作变得简单。同时,Struts 2框架取消了ActionForm,支持多种返回类型和Ajax技术,简化了同其他技术的整合。从Apache官方的宣传来看,Struts 2不久将会替代Struts 1.X。
目前,国内关于Struts 2框架介绍方面的书籍比较少,本书从最基本的处理机制和核心组件讲起,全面介绍Struts 2框架技术,由浅入深地引导读者掌握Struts 2技术,书中的示例简单易懂,重点突出,给读者提供一个良好的学习参考。
由于作者水平有限,如果读者发现问题或者错误之处,欢迎相互交流和探讨。
本书的内容安排
本书共分为3个部分,从最基础的Struts 2框架处理机制讲起,接着深入讲述整合JSF、Spring等技术,最后给出一个完整的论坛代码示例。读者通过这三个部分的学习,能够全面掌握Struts 2框架的精髓。
第一部分(第1~11章)讲述了Struts 2框架的核心处理机制,介绍了Struts 2的核心组件、国际化、输入校验、类型转换、拦截器和Ajax支持。每个章节都提供了详细的示例代码,供读者学习参考。
第二部分(第12~19章)重点讲述了如何在Struts 2框架中整合其他流行技术,如JSF、Spring和Hibernate等。在第15章介绍了在Struts 2框架中如何访问MySQL数据库服务器,每个知识点笔者都提供了详细的示例代码供读者参考。
第三部分(第20章)是对前面所有章节的一个总结和提高,笔者引导读者通过一个示例论坛的开发来巩固前面所学到的知识。更加重要的是该部分介绍了一个完整的应用项目开发组织和开发管理过程,在读者学习体会Struts 2精彩之处的同时了解项目开发模式,对初学者尤其重要。
读者可以遵循本书的写作顺序,参考下面流程图阅读本书。..
本书的特点
笔者试图通过本书的讲解,使读者能够理解Struts 2框架技术的精髓,为了避免教科书式的枯燥,在书中加入了许多重点标注和小结,每个代码示例均紧扣知识点,简单易懂。
本书具有如下特点:
本书的编排采用循序渐进的方式,适合初级、中级学者逐步掌握Struts 2框架技术。
本书重点讲解Struts 2框架核心组件,帮助读者真正理解Struts 2的精髓。
本书采用了大量的实例,讲述Struts 2框架的知识点。
所有实例都具有代表性和实际意义,着重解决工作中的实际问题。
对于有特点的实例进行详细的解释和分析,帮助读者理解和模拟实践。
引导读者理解规范的代码开发,对软件开发初学者尤其有用。
按递进关系进行案例组织,使用新旧的知识点时相互关联,对比分析易于理解。
Struts 2框架技术整合了Struts 1.X和WebWork的优点,Struts 2框架最大的特点就是其简单性,引入了OGNL表达式和值栈的概念,可以使开发者使用简单的代码实现复杂的数据访问;Action实现类就是一个标准的Java类(POJO),这使得测试工作变得简单。同时,Struts 2框架取消了ActionForm,支持多种返回类型和Ajax技术,简化了同其他技术的整合。从Apache官方的宣传来看,Struts 2不久将会替代Struts 1.X。
目前,国内关于Struts 2框架介绍方面的书籍比较少,本书从最基本的处理机制和核心组件讲起,全面介绍Struts 2框架技术,由浅入深地引导读者掌握Struts 2技术,书中的示例简单易懂,重点突出,给读者提供一个良好的学习参考。
由于作者水平有限,如果读者发现问题或者错误之处,欢迎相互交流和探讨。
本书的内容安排
本书共分为3个部分,从最基础的Struts 2框架处理机制讲起,接着深入讲述整合JSF、Spring等技术,最后给出一个完整的论坛代码示例。读者通过这三个部分的学习,能够全面掌握Struts 2框架的精髓。
第一部分(第1~11章)讲述了Struts 2框架的核心处理机制,介绍了Struts 2的核心组件、国际化、输入校验、类型转换、拦截器和Ajax支持。每个章节都提供了详细的示例代码,供读者学习参考。
第二部分(第12~19章)重点讲述了如何在Struts 2框架中整合其他流行技术,如JSF、Spring和Hibernate等。在第15章介绍了在Struts 2框架中如何访问MySQL数据库服务器,每个知识点笔者都提供了详细的示例代码供读者参考。
第三部分(第20章)是对前面所有章节的一个总结和提高,笔者引导读者通过一个示例论坛的开发来巩固前面所学到的知识。更加重要的是该部分介绍了一个完整的应用项目开发组织和开发管理过程,在读者学习体会Struts 2精彩之处的同时了解项目开发模式,对初学者尤其重要。
读者可以遵循本书的写作顺序,参考下面流程图阅读本书。..
本书的特点
笔者试图通过本书的讲解,使读者能够理解Struts 2框架技术的精髓,为了避免教科书式的枯燥,在书中加入了许多重点标注和小结,每个代码示例均紧扣知识点,简单易懂。
本书具有如下特点:
本书的编排采用循序渐进的方式,适合初级、中级学者逐步掌握Struts 2框架技术。
本书重点讲解Struts 2框架核心组件,帮助读者真正理解Struts 2的精髓。
本书采用了大量的实例,讲述Struts 2框架的知识点。
所有实例都具有代表性和实际意义,着重解决工作中的实际问题。
对于有特点的实例进行详细的解释和分析,帮助读者理解和模拟实践。
引导读者理解规范的代码开发,对软件开发初学者尤其有用。
按递进关系进行案例组织,使用新旧的知识点时相互关联,对比分析易于理解。
书摘回到顶部↑
第1章 Struts 2概述
Struts 1与Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制。除此之外,Struts 1的优点主要集中体现在两个方面:
Taglib标签库:Taglib是Struts 1的标签库,灵活使用,能大大提高开发效率。目前国内的JSP开发者,除了使用JSP自带的常用标签外,很少开发自己的标签,自从Struts 1广泛应用以来,很多公司或者开发团队越来越重视自己标签库的开发,这是一个很好的起点。
页面导航:页面导航将是今后的一个发展方向,事实上,这样使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
但是,任何优秀的框架也不可能是十全十美的,存在着或多或少的问题,例如在一个复杂的大型应用中,Struts 1很容易引起类爆炸。同时,在测试方面,编写测试用例类十分不方便,给测试工作带来了许多困难。尽管现在有一个测试框架Struts Test提供Struts 1的测试编写,但是这样测试方式加剧了复杂化。
提示
Apache官方网站是这样介绍Struts 2的:Apache Struts 2 was originally known as WebWork2.After working independently for several years,the WebWork and Struts communities joinedforces to create Struts 2。翻译过来大致意思是:Apache Struts 2就是之前大家所熟知的WebWork 2,在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2。WebWork项目已经被Apache所收购,不会再进行升级。
Struts 2中去掉了Struts 1中的ActionForm,实现了同Servlet API的松散耦合。Struts 2并不是一个全新的架构,而是继承了Struts 1和WebWork的优点,在稳定性、易用性方面都有了很大的提高。Apache Struts 2 GA版本已经发布,这是Apache Struts 2发行的首个稳定版本,GA意味着General Availability,也就是官方开始推荐广泛使用了。Struts2 GA版本的发布,意味着核心开发力量将全部转移到Struts 2,对Struts 1的支持将会淡化。Struts 2的发展前景非常看好,有望在不远的将来完全代替Struts 1。
1.1 MVC介绍
随着Web技术的发展,传统的C/S(客户端/服务器)开发模式正向B/S(浏览器/服务器)模式转换,更多的应用系统采用了B/S结构。
MVC设计思想是Model-View-Controller的简称,即模型-视图-控制器,在Web应用系统的设计开发中被广泛采用。介绍MVC设计思想,先从Web技术发展说起。
1.1.1 Web技术发展
Web的前身是1980年Tim Berners—Lee负责的Enquire(Enquire Within Upon Everything的简称)项目。1990年11月,第一个Web服务器nxoc01.CelTl.ch开始运行。1991年,CERN(European Particle Physics Laboratory)正式发布了Web技术标准。
Web是一种典型的分布式应用架构。Web应用中的每一次信息交换都要涉及客户端和服务端两个层面。因此,Web开发技术大体上也可以被分为客户端技术和服务器端技术两大类。
Web客户端的主要任务是展现信息内容,而HTML语言则是信息展现的最有效载体之一。最初的HTML语言只能在浏览器中展现静态的文本或图像信息,这满足不了人们对信息丰富性和多样性的强烈需求,由静态技术向动态技术的转变成为了Web客户端技术发展方向。
除了编写HTML页面之外,客户端应用的开发者还可以利用一些成熟的技术将浏览器的功能添加到自己的应用程序中。从1992年开始,W3C向开发者提供libwww开发库。借助libwww,可以自己编写Web浏览器和Web搜索工具,也可以分析、编辑或显示HTML页面。1999年,Microsoft在IE 5.0中引入的HTAs(HTML Applications)技术则允许开发者直接将HTML页面转换为一个真正的应用程序。从1997年的IE 4.0开始,Microsoft为开发者提供了WebBrowser控件和其他相关的COM接口,允许程序员在自己的程序中直接嵌入浏览器窗口,或调用各种浏览器的功能,如分析或编辑HTML页面等。
与客户端技术从静态向动态的演进过程类似,Web服务器端的开发技术也是由静态向动态逐渐发展、完善起来的。第一种真正使服务器能根据运行时的具体情况,动态生成HTML页面的技术是CGI(Common Gateway Interface)技术。1995年,NCSA(National Centerfor Supercomputing Applications)开始制定GGI 1.1标准。GGI技术允许服务器端的应用程序根据客户端的请求,动态生成HTML页面,这使客户端和服务器端的动态信息交换成为了可能。
随着GGI技术的普及,聊天室、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴起。早期的CGI程序大多是编译后的可执行程序,其编程语言可以是C、C++、Pascal等任何通用的程序设计语言。为了简化GGI程序的修改、编译和发布过程,人们开始探寻用脚本语言实现GGI应用的可行方式。Perl结合了C语言的高效以及sh、awk等脚本语言的便捷,适用于GGI程序的编写。
1994年,出现了PHP(Personal Home Page Tools)语言。与以往的GGI程序不同,PHP语言将HTML代码和PHP指令合成为完整的服务器端动态页面,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。1996年,Microsoft发布了ASP技术。ASP使用的脚本语言是熟悉的VBScript和JavaScript。ASP迅速成为了Windows系统下Web服务器端的主流开发技术。1997年,Servlet技术问世,1998年,JSP技术诞生,Servlet和JSP被后来的J2EE平台吸纳为核心技术。
ASP技术和JSP技术面世之后,导致了微软和以Sun公司为首的Java体系的竞争。JSP与微软的ASP十分相似,但事实上,两者是有着本质的不同的,主要从以下几个方面对其进行比较:
Struts 1与Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制。除此之外,Struts 1的优点主要集中体现在两个方面:
Taglib标签库:Taglib是Struts 1的标签库,灵活使用,能大大提高开发效率。目前国内的JSP开发者,除了使用JSP自带的常用标签外,很少开发自己的标签,自从Struts 1广泛应用以来,很多公司或者开发团队越来越重视自己标签库的开发,这是一个很好的起点。
页面导航:页面导航将是今后的一个发展方向,事实上,这样使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
但是,任何优秀的框架也不可能是十全十美的,存在着或多或少的问题,例如在一个复杂的大型应用中,Struts 1很容易引起类爆炸。同时,在测试方面,编写测试用例类十分不方便,给测试工作带来了许多困难。尽管现在有一个测试框架Struts Test提供Struts 1的测试编写,但是这样测试方式加剧了复杂化。
提示
Apache官方网站是这样介绍Struts 2的:Apache Struts 2 was originally known as WebWork2.After working independently for several years,the WebWork and Struts communities joinedforces to create Struts 2。翻译过来大致意思是:Apache Struts 2就是之前大家所熟知的WebWork 2,在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2。WebWork项目已经被Apache所收购,不会再进行升级。
Struts 2中去掉了Struts 1中的ActionForm,实现了同Servlet API的松散耦合。Struts 2并不是一个全新的架构,而是继承了Struts 1和WebWork的优点,在稳定性、易用性方面都有了很大的提高。Apache Struts 2 GA版本已经发布,这是Apache Struts 2发行的首个稳定版本,GA意味着General Availability,也就是官方开始推荐广泛使用了。Struts2 GA版本的发布,意味着核心开发力量将全部转移到Struts 2,对Struts 1的支持将会淡化。Struts 2的发展前景非常看好,有望在不远的将来完全代替Struts 1。
1.1 MVC介绍
随着Web技术的发展,传统的C/S(客户端/服务器)开发模式正向B/S(浏览器/服务器)模式转换,更多的应用系统采用了B/S结构。
MVC设计思想是Model-View-Controller的简称,即模型-视图-控制器,在Web应用系统的设计开发中被广泛采用。介绍MVC设计思想,先从Web技术发展说起。
1.1.1 Web技术发展
Web的前身是1980年Tim Berners—Lee负责的Enquire(Enquire Within Upon Everything的简称)项目。1990年11月,第一个Web服务器nxoc01.CelTl.ch开始运行。1991年,CERN(European Particle Physics Laboratory)正式发布了Web技术标准。
Web是一种典型的分布式应用架构。Web应用中的每一次信息交换都要涉及客户端和服务端两个层面。因此,Web开发技术大体上也可以被分为客户端技术和服务器端技术两大类。
Web客户端的主要任务是展现信息内容,而HTML语言则是信息展现的最有效载体之一。最初的HTML语言只能在浏览器中展现静态的文本或图像信息,这满足不了人们对信息丰富性和多样性的强烈需求,由静态技术向动态技术的转变成为了Web客户端技术发展方向。
除了编写HTML页面之外,客户端应用的开发者还可以利用一些成熟的技术将浏览器的功能添加到自己的应用程序中。从1992年开始,W3C向开发者提供libwww开发库。借助libwww,可以自己编写Web浏览器和Web搜索工具,也可以分析、编辑或显示HTML页面。1999年,Microsoft在IE 5.0中引入的HTAs(HTML Applications)技术则允许开发者直接将HTML页面转换为一个真正的应用程序。从1997年的IE 4.0开始,Microsoft为开发者提供了WebBrowser控件和其他相关的COM接口,允许程序员在自己的程序中直接嵌入浏览器窗口,或调用各种浏览器的功能,如分析或编辑HTML页面等。
与客户端技术从静态向动态的演进过程类似,Web服务器端的开发技术也是由静态向动态逐渐发展、完善起来的。第一种真正使服务器能根据运行时的具体情况,动态生成HTML页面的技术是CGI(Common Gateway Interface)技术。1995年,NCSA(National Centerfor Supercomputing Applications)开始制定GGI 1.1标准。GGI技术允许服务器端的应用程序根据客户端的请求,动态生成HTML页面,这使客户端和服务器端的动态信息交换成为了可能。
随着GGI技术的普及,聊天室、论坛、电子商务、信息查询、全文检索等各式各样的Web应用蓬勃兴起。早期的CGI程序大多是编译后的可执行程序,其编程语言可以是C、C++、Pascal等任何通用的程序设计语言。为了简化GGI程序的修改、编译和发布过程,人们开始探寻用脚本语言实现GGI应用的可行方式。Perl结合了C语言的高效以及sh、awk等脚本语言的便捷,适用于GGI程序的编写。
1994年,出现了PHP(Personal Home Page Tools)语言。与以往的GGI程序不同,PHP语言将HTML代码和PHP指令合成为完整的服务器端动态页面,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web功能。1996年,Microsoft发布了ASP技术。ASP使用的脚本语言是熟悉的VBScript和JavaScript。ASP迅速成为了Windows系统下Web服务器端的主流开发技术。1997年,Servlet技术问世,1998年,JSP技术诞生,Servlet和JSP被后来的J2EE平台吸纳为核心技术。
ASP技术和JSP技术面世之后,导致了微软和以Sun公司为首的Java体系的竞争。JSP与微软的ASP十分相似,但事实上,两者是有着本质的不同的,主要从以下几个方面对其进行比较:








点击看大图







加载中...

