MyEclipse6Java开发中文教程 校验和内容校验,来支持 chain校验子属性 Action执行控制 Sus1x支持每一个模块有单独的 Request Processors(生命周期),但是模块中的所有 Action必须共享 相同的生命周期 Struts2支持通过拦截器堆栈( Interceptor Stacks)为每一个 Action创建不同的生命周期。堆栈能够根据需 要和不同的Acon一起使用 但是比较遗憾的是,目前MyEc|ipse6对Suts2的开发还没有提供任何直接的支持, 所以本章我们将不得不手工加入相关的jar文件来开发,不过您会发现相比较Suts1来说 其开发过程要简单的多。 122下载 Struts2开发包 要学习 Struts的话,可以访问其官方网站htp/ /struts. apache. org2x,或者从网站 htto/ struts. apache. oral进去后点击 Struts2的链接进入,另外还可以阅读以Wk形式组织 的在线文档库http://cwiki.apache.org/s42WK。当然网站都是由参与者自愿维护的,所以 很多资料并不是特别的新,有时候可能还有错误。 由于 MyEclipse6自身不带 Struts2的类库,因此我们必须手工下载它。在浏览器中键 入地址htto/ struts. apache. org/download cqi,即可进入 Struts的下载页面,如图121所 示。值得注意的是在这个页面中同时包含 Struts1和2的下载包,显示在页面上方的是 Struts 2,目前版本是20112下方的是Sus1,自前版本是1.38。先来简要看看2的下载包有 哪些内容, Full Releases StRuts 2.0.11 ache Struts 2 is an elegant, extensible framework for creating ent Available in a full distribution, or as separate lbrary, source, example is the best avadlable" version of struts Full Dis tribution: o struts-2011-all. zip(86mb)[PGP] [MD5 Example Applications o struts-2.0.11-apps zip(22mb)[PGP] [MD5] s-2.0.11-docs zip(55mb)[PGP] [MD5] Alternative 322.0.11-j4 zip(3mb)tPGP)[MD51 Struts 1.3.8 Struts 1.3.8 is the latest production release of struts 1. It is availat 图121 Struts下载页面 如图中所示,它的下载包分很多类型。先来看完整包( Full distribution),大小为86MB 文件名是 struts-20.11-azj。这个包比较完整,然而个头也非常大,内容包括了下面5个 刘长炯著
MyEclipse 6 Java 开发中文教程 6 刘长炯著 校验和内容校验,来支持 chain 校验子属性 Action 执行控制 Struts1.x 支持每一个模块有单独的 Request Processors(生命周期),但是模块中的所有 Action 必须共享 相同的生命周期。 Struts2 支持通过拦截器堆栈(Interceptor Stacks)为每一个 Action 创建不同的生命周期。堆栈能够根据需 要和不同的 Action 一起使用。 但是比较遗憾的是,目前 MyEclipse 6 对 Struts 2 的开发还没有提供任何直接的支持, 所以本章我们将不得不手工加入相关的 jar 文件来开发,不过您会发现相比较 Struts 1 来说, 其开发过程要简单的多。 12.2 下载 Struts 2 开发包 要学习Struts的话,可以访问其官方网站 http://struts.apache.org/2.x/ ,或者从网站 http://struts.apache.org/ 进去后点击Struts2 的链接进入,另外还可以阅读以Wiki形式组织 的在线文档库 http://cwiki.apache.org/S2WIKI/。当然网站都是由参与者自愿维护的,所以 很多资料并不是特别的新,有时候可能还有错误。 由于MyEclipse 6 自身不带Struts 2 的类库,因此我们必须手工下载它。在浏览器中键 入地址 http://struts.apache.org/download.cgi,即可进入Struts 的下载页面,如图 12.1 所 示。值得注意的是在这个页面中同时包含Struts 1 和 2 的下载包,显示在页面上方的是Struts 2,目前版本是 2.0.11;下方的是Struts 1,目前版本是 1.3.8。先来简要看看 2 的下载包有 哪些内容。 图 12.1 Struts 下载页面 如图中所示,它的下载包分很多类型。先来看完整包(Full Distribution),大小为 86MB, 文件名是 struts-2.0.11-all.zip。这个包比较完整,然而个头也非常大,内容包括了下面 5 个
MyEclipse6Java开发中文教程 下载包中的全部内容。下载此包后解压缩可以看到在父目录Suts-2.0.11下包含以下几个子 目录: apps包含了四个war包形式的示例应用,附带有源码,读者可以发布到 Tomcat下,也 可阅读源码学习。 dcs包含了 javadoc,以及在线文档的离线版本,可以双击 index html开始阅读,点击 页面上的链接即可依次浏览全部内容,包括AUAX,文件上传等等。 包括了用于JDK14版本下的核心类库以及转换工具 ib包括了Sus2的全部核心类库和依赖包 src 代码目录 表121完整包目录介绍 。如果读者条件充分的话,例如用的是宽带,强烈建议直接下载这个包来使用,内容较全。 完整包下面的是示例应用( Example Applications),大小为22MB,文件名是 struts-20.1-apps.zj。它包含了上面完整包的aps目录下的四个wa示例应用,它们是 struts2-blank-2.0. 11. war, struts2-mailreader-2011.war, struts2-portlet-20 11.war struts2 showcase-20.11war第一个是精简的示例应用,大小为326MB,包括 Helloworld 和表单验证等例子,可以作为学习的入门例子。第二个乃是邮件阅读器的示例。第三个是门 户( Portlet)的例子。第四个则是展示例子,里面列出了儿乎所有 Struts2所支持的功能的 示例,包括 actionchaining,ajax,chat, filedownload, fileupload,jsf, modelDriven 再接下来是空应用( Blank Application Only),大小为3MB,文件名是 struts2- blank-20.11war,这个文件同时也包含在前两个发行包里面了。它包含了核心精简 过的Sus2空应用模版,在它的包的 WEB-INFnib目录下包含了下面几个jar文件 commons-logging-1.0. 4. jar freemarker-2.3.8. jar, ogn/-26 11.jar stu2coe20.11ar和 work204jar。如果再配合上 Spring的库文件以及 WebWork的 插件文件stus2- spang- plugin-20.11Jar,就可以进行两者的整合开发了。那么,在本章呢, 我们就是基于这个例子再加上刚提到的 Spring插件jar文件来进行示例应用的开发。在这里 我们简要的介绍一下这5个jar文件的用途 struts2-core-2.0 11 jar Struts2的核心包 work -2.0. 4 XWok2库, Struts2核心包作为底层库存在 ogn/-2611 jar Object Graph Navigation Language(OGNL),类似于EL 表达式的一种用于访问对象的表达式语言 freemarker-2. 3.8. jar Struts2所有的u标记的模板均使用 freemarker编写,可 通过修改或重写模板使 struts2的u标记按用户的需要进行 commons-logging-104jar| Apache的 Commons Loggin包,封装了通用的日志接口 可自动调用Log4J或者JDK14或者更高版本的 util. logging日志包 再往下是基础依赖类库( Essential Dependencies Only),大小为4MB,文件名是 stus2.011-ib,zjp,其中的文件是和完整包中的仇b目录下的所有文件相同的。它包含了 Struts2的所有核心和插件类库,读者如果是要进行完整应用的开发,建议把这个目录下的 所有jar文件放到Web应用的 WEB-NFlN目录下,这样比较保险。 最后剩下的分别是文档( Documentation),对应完整包的docs目录:源代码( Source) 刘长炯著
MyEclipse 6 Java 开发中文教程 7 刘长炯著 下载包中的全部内容。下载此包后解压缩可以看到在父目录 struts-2.0.11 下包含以下几个子 目录: apps 包含了四个 war 包形式的示例应用,附带有源码,读者可以发布到 Tomcat 下,也 可阅读源码学习。 docs 包含了 javadoc,以及在线文档的离线版本,可以双击 index.html 开始阅读,点击 页面上的链接即可依次浏览全部内容,包括 AJAX,文件上传等等。 j4 包括了用于 JDK 1.4 版本下的核心类库以及转换工具 lib 包括了 Struts2 的全部核心类库和依赖包 src 源代码目录 表 12.1 完整包目录介绍 。如果读者条件充分的话,例如用的是宽带,强烈建议直接下载这个包来使用,内容较全。 完整包下面的是示例应用(Example Applications),大小为 22MB,文件名是 struts-2.0.11-apps.zip。它包含了上面完整包的 apps 目录下的四个 war 示例应用,它们是: struts2-blank-2.0.11.war , struts2-mailreader-2.0.11.war , struts2-portlet-2.0.11.war , struts2-showcase-2.0.11.war。第一个是精简的示例应用,大小为 3.26 MB,包括 HelloWorld 和表单验证等例子,可以作为学习的入门例子。第二个乃是邮件阅读器的示例。第三个是门 户(Portlet)的例子。第四个则是展示例子,里面列出了几乎所有 Struts 2 所支持的功能的 示例,包括 actionchaining,ajax,chat,filedownload,fileupload,jsf,modelDriven 等 等。 再接下来是 空应用( Blank Application Only ),大小为 3MB ,文件名是 struts2-blank-2.0.11.war,这个文件同时也包含在前两个发行包里面了。它包含了核心精简 过的 Struts 2 空应用模版,在它的包的 WEB-INF/lib 目录下包含了下面几个 jar 文件: commons-logging-1.0.4.jar , freemarker-2.3.8.jar , ognl-2.6.11.jar , struts2-core-2.0.11.jar 和 xwork-2.0.4.jar。如果再配合上 Spring 的库文件以及 WebWork 的 插件文件 struts2-spring-plugin-2.0.11.jar,就可以进行两者的整合开发了。那么,在本章呢, 我们就是基于这个例子再加上刚提到的Spring插件jar文件来进行示例应用的开发。在这里, 我们简要的介绍一下这 5 个 jar 文件的用途: struts2-core-2.0.11.jar Struts2 的核心包 xwork-2.0.4.jar XWork 2 库,Struts2 核心包作为底层库存在 ognl-2.6.11.jar Object Graph Navigation Language (OGNL), 类似于 EL 表达式的一种用于访问对象的表达式语言 freemarker-2.3.8.jar Struts2 所有的 ui 标记的模板均使用 freemarker 编写,可 通过修改或重写模板使struts2的ui标记按用户的需要进行 显示 commons-logging-1.0.4.jar Apache 的 Commons Loggin 包,封装了通用的日志接口, 可自动调用 Log4J 或 者 JDK 1.4 或者更高版本的 util.logging 日志包 。 再往下是基础依赖类库(Essential Dependencies Only),大小为 4MB,文件名是 struts-2.0.11-lib.zip,其中的文件是和完整包中的 lib 目录下的所有文件相同的。它包含了 Struts 2 的所有核心和插件类库,读者如果是要进行完整应用的开发,建议把这个目录下的 所有 jar 文件放到 Web 应用的 WEB-INF/lib 目录下,这样比较保险。 最后剩下的分别是文档(Documentation),对应完整包的docs目录;源代码(Source)
MyEclipse6Jaa开发中文教程 对应完整包的Sc目录;可选的JDK14版本的JAR文件( Alternative Java4JARs), 对应完整包的4目录。 那么对于我们开发人员来说,如果手头已经有了 Struts2的参考资料,或者说对如何开 发已经很熟悉,可以直接下载基础依赖类库( Essential Dependencies Only),那么初学 者呢,如果网络不是太快,可以再加上下载空应用( Blank Application Only)即可,如果 希望深入全面的学习,还是下载个头最大的完整包( Full distribution)。 123开发第一个 Struts2应用 本节我们将进行简单的 HelloWorld的开发,以及基于POJO的 HelloWorld开发,自定 义 Action方法和通配符,接着我们将第九章的登录示例 StrutsLogin Demo用Sus2改写 并加入验证机制和国际化消息 1231准备工作 我们需要在 MyEclipse中创建一个新的Web项目,并向它添加必要的 Struts2类库 和配置文件。现在我们来创建一个名为 struts2heo的Web项目。选择菜单Fie>New> Web Project,可以启动创建Web项目的向导,如图83所示。在弹出的对话框的 Project Name中输入 struts2heo,然后选中J2 EE Specification Leve下面的 Java ee50单选 钮,最后点击 Finish按钮就可以创建好这个Web项目了。 项目创建完之后,我们需要给它加入 Struts2的类库。读者可以参考121节的内容下 载或者从完整包找到文件 struts2- blank-2.0.1.war,接着用Wnz|P或者 WinRAR等解压缩 软件解开它到电脑的硬盘上,然后将解出的 WEB-NFNib目录下的5个文件复制到当 前Web项目的 WebrooteB-NF№ib下,具体的做法希望大家还记得:首先切换到 Windows的文件浏览器中选中这5个解压缩出来的j间ar文件,然后按下快捷键ctr+C将它 们复制到剪贴板上,然后我们再切换到 MyEclipse的窗口,点击鼠标左键选中 Package Explorer视图下的sus2heo项目的目录节点 WebrooteB-NFnib,之后按下快捷键 ctrH+V,稍后这些jar文件就会被 MyEclipse加入到项目的 Build path中,会出现在项目的 节点 Referenced libraries之下。 那么接下米我们还需要做两件事:添加过滤器和默认配置文件。我们还记得以前的 Struts1是在 web. xm添加 action servlet的方式来工作的,但是 Struts2则是需要注册 个 Filter Dispatcher,这个 Filter拦截所有的请求(")使得Sus2框架为您服务,当然默认 条件下我们也可以只过滤 action下的请求来使之工作。那么现在就打开文件 web.x(在 我们的项目中,它位于 Webroot eB-NF/下),按照粗斜体部分代码将过滤器加入到配置 文件中,完整代码如下所示: <?xm1 version=1.0 encoding="UTE-8?> <web-appversion=2.5"xmlns="http://iava.suncom/xml/ns/iavaee xmlns:xsi="http://www.w3.org/2001/xmlscHema-instance xsischemalocation="http://java.sun.com/xml/ns/javaee http://java.suncom/xml/ns/avaee/web-app25.xsd"> <filter <filter-name>struts 2</filter-name> 刘长炯著
MyEclipse 6 Java 开发中文教程 8 刘长炯著 对应完整包的 src 目录;可选的 JDK 1.4 版本的 JAR 文件(Alternative Java 4 JARs), 对应完整包的 j4 目录。 那么对于我们开发人员来说,如果手头已经有了 Struts 2 的参考资料,或者说对如何开 发已经很熟悉,可以直接下载基础依赖类库(Essential Dependencies Only),那么初学 者呢,如果网络不是太快,可以再加上下载空应用(Blank Application Only)即可,如果 希望深入全面的学习,还是下载个头最大的完整包(Full Distribution)。 12.3 开发第一个 Struts 2 应用 本节我们将进行简单的 HelloWorld 的开发,以及基于 POJO 的 HelloWorld 开发,自定 义 Action 方法和通配符,接着我们将第九章的登录示例 StrutsLoginDemo 用 Struts2 改写, 并加入验证机制和国际化消息。 12.3.1 准备工作 我们需要在 MyEclipse 中创建一个新的 Web 项目,并向它添加必要的 Struts 2 类库 和配置文件。现在我们来创建一个名为 struts2hello 的 Web 项目。选择菜单 File > New > Web Project,可以启动创建 Web 项目的向导,如图 8.3 所示。在弹出的对话框的 Project Name 中输入 struts2hello,然后选中 J2EE Specification Level 下面的 Java EE 5.0 单选 钮,最后点击 Finish 按钮就可以创建好这个 Web 项目了。 项目创建完之后,我们需要给它加入 Struts 2 的类库。读者可以参考 12.1 节的内容下 载或者从完整包找到文件 struts2-blank-2.0.11.war,接着用 WinZIP 或者 WinRAR 等解压缩 软件解开它到电脑的硬盘上,然后将解出来的 WEB-INF/lib 目录下的 5 个 jar 文件复制到当 前 Web 项目的 WebRoot/WEB-INF/lib 下,具体的做法希望大家还记得:首先切换到 Windows 的文件浏览器中选中这 5 个解压缩出来的 jar 文件,然后按下快捷键 Ctrl+C 将它 们复制到剪贴板上,然后我们再切换到 MyEclipse 的窗口,点击鼠标左键选中 Package Explorer 视图下的 struts2hello 项目的目录节点 WebRoot/WEB-INF/lib,之后按下快捷键 Ctrl+V,稍后这些 jar 文件就会被 MyEclipse 加入到项目的 Build Path 中,会出现在项目的 节点 Referenced Libraries 之下。 那么接下来我们还需要做两件事:添加过滤器和默认配置文件。我们还记得以前的 Struts 1 是在 web.xml 添加 action servlet 的方式来工作的,但是 Struts 2 则是需要注册一 个 FilterDispatcher,这个 Filter 拦截所有的请求(/*)使得 Struts 2 框架为您服务,当然默认 条件下我们也可以只过滤*.action 下的请求来使之工作。那么现在就打开文件 web.xml(在 我们的项目中,它位于 WebRoot/WEB-INF/下),按照粗斜体部分代码将过滤器加入到配置 文件中,完整代码如下所示: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name>
MyEclipse6Java开发中文教程 <filter-class> org. apache struts2 dispatcher. FilterDispatcher <filter-class> chiller <filter-mapping? <filter-name>struts 2</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <welcome-file>index. jsp</welcome-file> </welcome-file-list> </web-app> 如我们所讨论过的,在这里默认条件下,您也可以把<u- pattern< url-pattern>修改为 <url-patterm>.action</url-pattern> 接下来做什么呢?以前的 Struts1的开发,是要在 Web rooteD-NF目录下创建配 置文件 struts- config. Xm,那么现在 Struts2的开发呢,也需要一个类似的配置文件的,所 不同的是它需要建在项目的Src目录下,名为 struts. xml,当项目发布以后,这个文件将会 被复制到WEB- INF/classes下。那么在sr目录上点击右键,选择菜单New>File,接着 在弹出对话框中的 File name右侧输入框中输入文件名 struts:xm,点击 Finish按钮关闭 对话框后,即可打开这个这个空的 struts. xml文件。然后我们把它的源代码修改为如下所 <I DOCTYPE struts PUBLIC -//Apache Software Foundation//DTD Struts Configuration 2.0//EN /dtds/struts-20 dtd"> <struts> <!-这里添加 Action定义 读者可以用复制粘贴将这些代码导入到编辑器中,无需再一一敲入了。我们可以注意到这 个配置文件中出现了 package,它类似于Java中的对象(注意和Java的 package的相似 之处除了可以包含多个文件,或者说定义之外,没有其它类似点,因为Java中的包是不可 继承的),其实就是可以将Acon分类,划分到不同的 package中,更主要的是这些包之间 可以互相继承,包括拦截器, action映射等等都可以继承。举个例子,我们写了个通用的登 录定义,那么另一个 action就可以继承它。在这里可以看到 extends=" struts-default",这是 个继承,那么继承的这个包定义在哪里呢?打开文件 WEB-NF/ib/ struts2core-20.11ar 文件包里根目录下有个 struts-default xm文件里面定义了一个包:< package name=" struts-default" abstract="true">,它为我们的应用程序提供了大量的默认配置,Stus 刘长炯著
MyEclipse 6 Java 开发中文教程 9 刘长炯著 <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 一如我们所讨论过的,在这里默认条件下,您也可以把<url-pattern>/*</url-pattern>修改为 <url-pattern>*.action</url-pattern>。 接下来做什么呢?以前的 Struts 1 的开发,是要在 WebRoot/WEB-INF/目录下创建配 置文件 struts-config.xml,那么现在 Struts 2 的开发呢,也需要一个类似的配置文件的,所 不同的是它需要建在项目的 src 目录下,名为 struts.xml,当项目发布以后,这个文件将会 被复制到 WEB-INF/classes 下。那么在 src 目录上点击右键,选择菜单 New > File,接着 在弹出对话框中的 File name 右侧输入框中输入文件名 struts.xml,点击 Finish 按钮关闭 对话框后,即可打开这个这个空的 struts.xml 文件。然后我们把它的源代码修改为如下所 示: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" namespace=”/” extends="struts-default"> <!-- 在这里添加Action定义 --> </package> </struts> 。读者可以用复制粘贴将这些代码导入到编辑器中,无需再一一敲入了。我们可以注意到这 个配置文件中出现了 package,它类似于 Java 中的对象(注意和 Java 的 package 的相似 之处除了可以包含多个文件,或者说定义之外,没有其它类似点,因为 Java 中的包是不可 继承的),其实就是可以将 Action 分类,划分到不同的 package 中,更主要的是这些包之间 可以互相继承,包括拦截器,action 映射等等都可以继承。举个例子,我们写了个通用的登 录定义,那么另一个 action 就可以继承它。在这里可以看到 extends="struts-default",这是 个继承,那么继承的这个包定义在哪里呢?打开文件 WEB-INF/lib/struts2-core-2.0.11.jar 文件包里根目录下有个 struts-default.xml 文件里面定义了一个包: <package name="struts-default" abstract="true">,它为我们的应用程序提供了大量的默认配置,Strus
MyEclipse6Java开发中文教程 2解析配置文件的时候,会自动从类路径的根目录下依次先加载 struts- default xm里面的包 定义,再解析我们自己编写的 struts. xn。在稍后我们编写第一个 HelloWorld示例的时候, 还会继续深入的讨论 package和 action的定义方式 另外, Struts2还支持多个配置文件的定义方式,这在实际开发中,便于程序员分开维 护,例如会将用户管理相关的模块写入 userxm。这个文件的内容和上面的默认 struts. xml 的格式是一样的,包括头定义。这个文件,同样也放在src目录的根下面,或者放在src下 的某个子目录。最后呢,我们需要把它使用 include指令加入到默认的 struts.xm文件里 面即可。下面是一个 struts. xml的示例 ?xml vers 0"encoding=UTF-8 ?> <I DOCTYPE struts public //Apache Software Foundation//DTD Struts Configuration 2. 0//EN http://struts.apacheorg/dtds/struts-2.0.dtd"> <struts> <include files"user. xm/> <include file="util/PoJO. xm/p <package name="default"extends="struts-default" name space="/a"> !--在这里添加 Action定义--> </package> </struts> 。当然在这种情况下,开发人员可以无需在主配置文件中加入任何 package定义了。这也 是Sts2的一个特点,配置文件可大可小分割 注意:读者对此先做了解即可,在我们的例子中不做这方面的展示了,读者在阅读 Struts 自带例子的时候可能会看到这个指令 至此为止,读者已经搭建好了 Struts2的开发环境了。 1232开发 Helloworld 现在介绍了这么多的准备知识,大家可能已经迫不及待的想要亲自做一个例子跑一下感 受了。OK,现在我们就来开发一个最简单的 HelloWorld例子。 首先,新建Java类文件 example HelloWorld。选择菜单Fie>New>cass,或者点 击工具栏土的按钮,在打开的新建类的对话框中,输入 Package为 example,Name 为 Helloworld,点击 Finish按钮后即可将此类创建。现在我们将其代码修改为如下所示: package examplei import com. opensymphony xwork2. ActionSupport public class HelloWorld extends ActionSupport t public String execute() throws Exception I setMessage("你好! struts2!") return SUCCESS 刘长炯著
MyEclipse 6 Java 开发中文教程 10 刘长炯著 2 解析配置文件的时候,会自动从类路径的根目录下依次先加载 struts-default.xml 里面的包 定义,再解析我们自己编写的 struts.xml。在稍后我们编写第一个 HelloWorld 示例的时候, 还会继续深入的讨论 package 和 action 的定义方式。 另外,Struts 2 还支持多个配置文件的定义方式,这在实际开发中,便于程序员分开维 护,例如会将用户管理相关的模块写入 user.xml。这个文件的内容和上面的默认 struts.xml 的格式是一样的,包括头定义。这个文件,同样也放在 src 目录的根下面,或者放在 src 下 的某个子目录。最后呢,我们需要把它使用 include 指令加入到默认的 struts.xml 文件里 面即可。下面是一个 struts.xml 的示例: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="user.xml"/> <include file="/util/POJO.xml"/> <package name="default" extends="struts-default" namespace="/a" > <!-- 在这里添加Action定义 --> </package> </struts> 。当然在这种情况下,开发人员可以无需在主配置文件中加入任何 package 定义了。这也 是 Struts 2 的一个特点,配置文件可大可小分割。 注意:读者对此先做了解即可,在我们的例子中不做这方面的展示了,读者在阅读 Struts 自带例子的时候可能会看到这个指令。 至此为止,读者已经搭建好了 Struts 2 的开发环境了。 12.3.2 开发 HelloWorld 现在介绍了这么多的准备知识,大家可能已经迫不及待的想要亲自做一个例子跑一下感 受了。OK,现在我们就来开发一个最简单的 HelloWorld 例子。 首先,新建 Java 类文件 example.HelloWorld。选择菜单 File > New > Class,或者点 击工具栏上的 按钮,在打开的新建类的对话框中,输入 Package 为 example,Name 为 HelloWorld,点击 Finish 按钮后即可将此类创建。现在我们将其代码修改为如下所示: package example; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { public String execute() throws Exception { setMessage("你好!Struts 2!"); return SUCCESS; }