《深入浅出
Struts 2》
一、
Struts概述
Struts是一个用来开发
Model 2应用程序的框架。这个框架可以提高开发工作的速度,因为它提供的下面这些功能解决了
Web应用程序开发过程中的一些常见问题:
- 对页面导航活动进行管理;
- 对来自用户的输入数据进行合法性验证;
- 统一的布局;
- 可扩展性;
- 国际化和本地化;
- 支持
Ajax技术。
因为
Struts是一个
Model 2框架,所以在使用
Struts时还应该遵守以下几条不成文的规定。
- 不要在
JSP页面里嵌入
Java代码,应该把所有的业务逻辑包含在一些被称为“动作类”(
action class)的
Java类里。
- 在
JSP页面里使用
Expression Language(
OGNL)去访问有关的模型对象。
- 尽量避免编写自定义标签(因为自定义标签的代码比较难以编写)。
二、升级到
Struts 2
你也许用过
Struts 1编程,这里提供了一个关于
Struts 2
新功能的简要介绍。
- 在
Struts 1里需要使用一个像
ActionServlet
类这样的东西作为
servlet控制器;
Struct 2使用了一个过滤器来完成同样的任务。
- 在
Struts 2里没有任何动作表单。在
Struts 1里,每个
HTML表单都对应着一个
ActionForm
实例,你可以从动作类访问这个动作表单,并用它来填充数据传输对象。在
Struts 2
里,
HTML表单将被直接映射为一个
POJO,而不再需要你创建一个数据传输对象,因为没有动作表单,维护工作变得简单容易了,你不再需要与那么多的类打交道。
- 问题来了:没有了动作表单,怎样才能在
Struts 2里通过编程对用户输入进行合法性验证呢?答案是把验证逻辑编写在动作类里。
- Struts 1通过几个标签库提供了一批定制标签供程序员在
JSP页面里使用,其中最重要的是
HTML标签库、
Bean标签库和
Logic标签库。
Servlet 2.4里的
JSTL和
EL(
Expression Language
,表达式语言)经常被用来代替
Bean和
Logic标签库。
Struts 2为程序员准备了一个应有尽有的标签库,你不再需要
JSTL,但在某些场合你可能仍需要
EL。
- 在
Struts 1里,你还需要用到一些
Struts配置文件,其中最主要的是存放在各
Web应用程序里的
WEB-INF子目录里的
struts-config.xml(默认文件名)。在
Struts 2里,你仍需要用到多个配置文件,但必须把它们存放在
WEB-INF/classes子目录或它的某个下级子目录里。
- 要想使用
Struts 2
,你的系统里必须有
Java 5
和
Servlet 2.4
(或更高版本)。之所以需要有
Java
5,是因为
Java 5里新增加的注解在
Struts 2里扮演着重要角色。我们撰写本书时,
Java 6已经发布,
Java 7也指日可待,你很可能已经在使用
Java 5或
Java 6了。
- 在
Struts 1
里,动作类必须扩展自
org.apache.struts.action.Action
类。在
Struts 2
里,任何一个
POJO
都可以是一个动作类。不过,我们将在本书第
3
章说明,在
Struts 2
里最好对
ActionSupport
类进行扩展。在此基础上,可用一个动作类来完成相关的动作。
- Struts 2在
JSP页面里使用
OGNL来显示各种对象模型,而不再是
JSP EL和
JSTL。
- 原本是
Struts 1组件之一的
Tiles现在已经发展为一个独立的
Apache项目。它在
Struts 2里仍可以作为一个插件使用。
查看详情
三、本书各章内容概述
本书的目标读者是那些希望学习开发
Struts应用程序的人。不过,我们并不只是介绍如何开发,我们还会花一些篇幅介绍编写高效
Struts应用程序的方法。为了使本书名副其实,我们在编写本书时一直力求做到清晰易懂、可读性强。
下面是本书各章内容的概述。
第
1章:
Model 2应用程序
该章对
Model 2模型的体系结构进行解释,并提供了两个
Model 2应用程序示例,其中一个使用的是
servlet控制器,另一个使用的是过滤器调度程序。
第
2章:初识
Struts
该章对
Struts进行了简要的介绍。我们将学习
Struts框架的各主要组件和如何配置
Struts应用程序。
第
3章:动作与结果
Struts解决了
Web应用程序开发工作中的许多常见问题,如页面导航、输入验证等。因此,你可以把精力集中在最重要的开发任务上:在各个动作类里编写各种业务逻辑。这一章将介绍怎样才能编写出高效的动作类,还有其他相关主题,如默认结果类型、全局异常映射、通配符映射、动态方法的调用技巧等。
第
4章:
OGNL
该章对用来访问各种动作对象和页面内容对象的
OGNL(一种表达式语言)进行讨论。
OGNL是一种功能强大又易于使用的语言。除了访问各种对象,
OGNL还可以用来创建各种列表和映射关系。
第
5章:表单标签
Struts自带了一个标签库来提供
UI标签和非
UI标签(通用标签)。这一章将介绍表单标签,它们是一些用来输入表单数据的标签。你将了解使用这些标签的好处以及如何使用每一种标签。
第
6章:通用标签
该章对非
UI标签进行解释。非
UI标签分为两大类:控制标签和数据标签。
第
7章:类型转换
HTTP没有“类型”的概念,在
HTTP请求里发送的值都是字符串。在把表单字段映射到非
String
类型的动作属性时,
Struts会自动对这些值进行必要的转换。这一章将解释
Struts如何完成这类转换,你还将学到如何为更加复杂的情况(当
Struts 2内建的转换器帮不上忙时)编写你自己的转换器。
第
8章:输入验证
该章对输入数据进行验证的细节进行探讨。
第
9章:消息处理与国际化
该章讨论消息的处理问题,这也是应用程序在开发过程中最重要的任务之一。发展到现在,能够显示国际化和本地化的消息已逐渐成为应用程序必须具备的一项功能。
Struts 2从研发之初就已经考虑到了国际化和本地化的问题。
第
10章
:
Model Driven和
Preparable拦截器
该章对两种用来把动作和模型分离开来的重要的拦截器进行讨论。你将发现有许多动作都需要这些拦截器。
第
11章:持久层
该章研究存储各种数值对象所需要的持久层。持久层可以让它的客户(就本书讨论的问题而言,持久层的客户主要是有关的
Struts动作对象)无需关心访问数据库时的复杂性。持久层可以实现为
entity bean、
DAO(
Data Access Object,数据访问对象)模式,或者是使用
Hibernate等。这一章将详细演示如何实现
DAO模式。这类模式有许多种变体,你可以根据有关项目的具体情况和要求进行选择。
第
12章:文件的上传
该章对现有的
Web编程图书普遍没有给予足够重视的一个重要问题进行了讨论。
Struts通过与
Jakarta Commons FileUpload
库的无缝集成来支持文件上传操作。本章将讨论如何在
Struts框架下实现这个编程任务。
第
13章:文件的下载
该章讨论文件的下载问题,并演示如何把二进制数据流发送给浏览器。
第
14章:提高
Struts应用程序的安全性
你将在这一章学习如何配置部署描述文件,才能对应用软件里的部分或全体资源的访问操作做出限制。“配置”在这里的含义是,你只需要修改部署描述文件,不需要进行任何编程。此外,你还将学到如何在
Struts配置文件里使用
action
元素的
roles
属性。这一章还将介绍一些如何编写
Java代码来保护
Web应用程序的技巧。
第
15章:防止重复提交
该章解释了如何利用
Struts的内建功能防止用户重复提交请求。重复提交有时是由于用户的错误操作,有时是因为表单处理时间过长而让用户不知如何是好。
第
16章:调试与性能分析
Struts应用程序的调试工作很容易进行。这一章将讨论怎样才能用好这个功能。
第
17章:进度条
这一章介绍
Execute和
Wait两个拦截器,它们可以用来为那些响应时间比较长的任务提供一个进度条。
第
18章:定制拦截器
这一章介绍如何编写你自己的拦截器。
第
19章:定制结果类型
Struts支持各种各样的结果类型,我们甚至可以自行编写出各种新的类型。这一章将演示怎样才能做到这一点。
第
20章
:
Velocity
Velocity是一种比较流行的模板语言,这一章简要介绍
Velocity以及如何用它来代替
JSP。
第
21章
:
FreeMarker
这一章简单介绍
Struts里默认使用的模板语言
FreeMarker。
第
22章
:
XSLT结果类型
该章讨论
XSLT结果类型以及如何把
XML转换为另一种
XML、
XHTML或其他格式。
第
23章:插件
该章讨论如何把
Struts模块打包成插件,这可以让它们更便于发行和传播。
第
24章:
Tiles插件
该章简要介绍
Tiles 2。
Tiles是一个开源项目,主要用于对
Web页面进行布局。
第
25章
:
JFreeChart插件
该章讨论如何使用流行的
JFreeChart插件轻松地创建
Web图表。
第
26章
:
零配置
该章解释怎样才能开发出一个不需要配置的
Struts应用程序,以及
CodeBehind插件是如何使这个功能更加强大的。
第
27章:
Ajax
Ajax技术是
Web 2.0的精髓所在,随着时间的推移,它正变得越来越流行。这一章将介绍
Struts框架为
Ajax技术提供的支持,并解释如何使用
Ajax定制标签来构建
Ajax组件。
附录
A:
Struts配置
附录
A提供了一个关于如何编写
Struts配置文件的指南。
附录
B:
JSP EL语言
当
OGNL语言和
Struts定制标签无法提供最佳的解决方案时,这种语言也许可以帮上大忙。
附录
C:
Java注解
附录
C对
Java 5里的这个新功能进行讨论,这个功能在
Struts里用途很广。
四、系统最低配置要求和文件下载途径
要想使用
Struts 2,你的系统至少需要安装
Java 5
、
Servlet 2.4和
JSP 2.0。这本书里的所有示例程序都基于
Servlet 2.5
,它目前是
Servlet的最新版本(在我撰写本书时,
Servlet 3.0正处于草稿阶段)。你需要
Tomcat 5.5
或更高版本;如果选用其他的
Java EE容器,它们必须能够支持
Servlet 2.4或更高版本。
Struts的源代码发行版本和二进制发行版本可以从以下地址下载:
http://struts.apache.org/downloads.html
有多种不同的
ZIP文件可供下载。
struts-VERSION
-all.zip文件(其中的
VERSION
是
Struts的版本号)包括了所有的库、源代码和样板程序,其长度大概有
86 MB;如果你有足够的带宽,我建议你下载这个文件。如果你的带宽不足,那就试试
struts-VERSION
-lib.zip文件好了(只有
4 MB左右),该文件只打包了必要的库。
选择并下载了某个
ZIP文件之后,将它解压缩。你将发现
lib子目录会多出几十个
JAR文件。属于
Struts 2的
JAR文件的名字都以“
struts2”开头。在每一个
Struts JAR文件的名字里都包含版本信息。例如,
core库被打包在
struts2-core-VERSION
.jar文件里,
VERSION
部分给出了相应的主版本号和次版本号。以
Struts 2.1.0为例,它的核心库的文件名是
struts2-core-2.1.0.jar。
要想使用
Struts,还需要安装一些来自其他项目的库文件。常用的
JAR文件来自
Apache Jakarta Common项目。你的系统里必须有这些常用的
JAR文件。此外,
ognl-VERSION
.jar文件包含
OGNL引擎,这是一个重要的必备品。
freemarker-VERSION
.jar文件包含
FreeMarker模板引擎。即使你选用
JSP作为页面显示技术,
FreeMarker模板引擎也是必需的,这是因为
FreeMarker是
Struts定制标签的配套模板语言。
xwork-VERSION
.jar文件包含
XWork,而
Struts 2就建立在这个框架的基础上,千万不要忘记把这个
JAR文件安装上。
那些包含各种插件的
JAR文件不是必不可少的。它们的文件名都有着如下所示的格式:
struts2-xxx
-plugin-VERSION
.jar
其中的
xxx
是插件的名字。例如,
Tiles插件被打包在
struts2-tiles-plugin-VERSION
.jar文件里。
如果你的应用程序没有用到
Tiles插件所提供的功能,就不需要安装与
Tiles插件有关的
JAR文件。
五、样板程序
这本书里的所有示例程序代码都可以从图灵网站
www.turingbook.com本书网页免费注册下载。
这些示例程序的组成文件都按以下格式命名:
appXXy
其中
XX
是一个用两位数表示的章节数,
y
代表那个示例程序对应那一章里的第几个示例程序。例如,第
1章里的第
2个示例程序的文件名是
app01b。
本书中的所有示例已经在
Tomcat 6环境下通过了测试。在我们的机器上,它们都运行在
8080号端口上。因此,所有的示例程序都需要这样启动:先写出
http://localhost:8080,然后写出示例程序的名字和相关
servlet的路径。
本书相关信息:
http://www.cnblogs.com/turingbooks/archive/2009/04/03/1428711.html
分享到:
相关推荐
深入全面阐释Struts2的方方面面 涵盖FreeMarker、Ajax等大量相关技术 媒体推荐 “本书是毋庸置疑的struts2权威著作,虽然肯定还会有更多相关图书出现,但是我相信它已经不可超越。” ——JavaRanch网站 “本书...
01_JPA详解_全面阐释和精彩总结JPA.zip 01_JPA详解_全面阐释和精彩总结JPA.zip
01_传智播客JPA详解_全面阐释和精彩总结JPA.rar
·全面阐释C++基本概念和技术。与传统的C++教材相比,《C++程序设计原理与实践》对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。 ·强调现代C++编程风格。从开篇就介绍...
Jpa.doc
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA用于整合现有的ORM技术,第1讲 全面阐释和精彩总结JPA
那还等什么,本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和...
那还等什么,本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和...
02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容 06.分析文件上传时的一个安全问题 07.分析高质量项目该如何处理文件...
02.阐释软件分层的设计思想 03.文件上传组件的实现原理与应用分析 04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容 06.分析文件上传时的一个安全问题 07.分析高质量项目该如何处理文件...
《深入理解Java 7:核心技术与最佳实践》的主要内容可分为三大部分:第一部分是1-6章,全面阐释Java 7在语法、JVM、类库和API等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编码效率和提高代码质量...
参考资料-书法的形态与阐释.zip
毕业设计论文作品阐释模板.doc
民法典体系下合伙份额法律属性阐释.docx
《计算的本质:深入剖析程序和计算机》借助简单的Ruby代码示例,全面、深入地介绍计算理论和编程语言设计。作者注重实用性,在读者熟知的背景知识下,以明晰的可工作代码阐释了形式语义、自动机理论,以及通过lambda...
此资源搬运自其他贴吧,此资源可改变光标样式,动漫爱好者们都知道这是刀剑神域主角的剑样式 ,替换光标后变得非常炫酷
深入理解Java 7:核心技术与最佳实践》的主要内容可分为三大部分:第一部分是1-6章,全面阐释Java 7在语法、JVM、类库和API等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编码效率和提高代码质量;...