Struts2的环境要求 Apache Struts2的环境需求如下:
Servlet API 2.4
JSP API 2.0
Java 5
需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5.
Struts2环境搭建
4.1Struts的下载
从游览器输入http://people.apache.org/builds/struts/,即可看到Struts的各个版本列表。从下图中可以发现,现在Struts2.0的最新版是2.1.0,发布于2007年10月29。

(图1)

(图2)
从图2中可以看出,即可以分开下载,又可以一次全部下载。全部下载的大小为83M,
下表注明了各个压缩包的作用。
压缩包名称
|
作用
|
struts-2.1.0-docs.zip
|
文档,包含了Struts2API
|
struts-2.1.0-lib.zip
|
构建Struts2工程所需要的包
|
struts-2.1.0-src.zip
|
Struts2的所有源代码
|
struts2-blank-2.1.0.war
|
空白工程
|
struts-2.1.0-all.zip
|
大集成,包括上面所有的内容
|
4.2 开发工具介绍
目前J2EE开发工具主要分为Eclipse和NetBeans两大阵营,Eclipse的最高版本为3.3,NetBeans的最高版本为6.0.今天刚刚从新闻上看到,NetBeans6.0的英文正式版正式发布了,真是可喜可贺。
笔者在开发时以Eclipse为主,但Eclipse并不支持WEB开发,需要安装相应插件。MyEclipse是一个功能强大且框架支持非常广泛的WEB开发插件,该产品是收费项目。目前MyEclipse的最高版本为6.0,即便如此,尚不支持Struts2.0,我们只能手工配置Struts2.0的开发环境。
4.3 库文件
从网站上下载的Struts2包含了二三十个库文件,但大多数是可选的,有些库是插件,用于和其他框架的整合。
读者可自行下载struts2-blank-2.1.0.war压缩包,展开后是一个非常简单的项目,从WEB-INF/lib目录中可以看到5个库文件,解释如下:
包名
|
说明
|
commons-logging-1.0.4.jar
|
日志管理
|
freemarker-2.3.8.jar
|
表现层框架,定义了struts2的可视组件主题(theme)
|
ognl-2.6.11.jar
|
OGNL表达式语言,struts2支持该EL
|
struts2-core-2.0.10.jar
|
struts2的核心库
|
xwork-2.0.4.jar
|
webwork的核心库,自然需要它的支持
|
(图3)
4.3 使用Eclipse搭建Struts2的开发环境4.3.1创建用户库
将Struts2所需的包建成用户库,可以更加方便地进行管理和使用,这是一个好的习惯——编程从习惯开始。
1.选择菜单Window->Preferences->Java->Build Path->User Libraries。如图4:

(图4)
2.点击右侧的New…按钮,创建一个新的用户库,弹出如图5所示对话框:

(图5)
3.输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。结果如图6所示:

(图6)
此时,右侧的按钮被点亮。
4.点击“Add JARS…”按钮,添加用户库所需的库文件,在Struts2中,至少要包含上文中提到的5个库文件。添加后效果如图7所示:

(图7)
5.点击“OK”完成。
4.3.2开发第一个Struts2应用程序——世界,你好
开发WEB应用程序,本文使用了MyEclipse插件。该插件为收费软件,目前提供英文版和日文版,不同的版本可以运行在Windows、Linux等操作系统上。为了方便用户,MyEclipse有一个Full版,连同Eclipse一起安装,对于初学者而言,可以减少很多麻烦和困扰。
读者可自行去http://www.myeclipseide.com/网站下载该软件的共享版本。建议读者下载MyEclipse5.5(这也是笔者使用的版本),这个版本相对比较稳定,MyEclipse6.0还处于测试之中。
入门教程总是以HelloWorld作为学习的第一步,自然笔者也不例外。本示例从游览器输入网址,提交请求后在页面中显示“世界,你好”的信息。
1.新建WEB工程,如图8所示:

(图8)
2.点击“Next”,输入工程名,如图9所示:

(图9)
3.点击“Finish”完成。
4.现在将Struts2的库导入到工程中,右击工程名称弹出快捷菜单,选择Build Path->Add Libraries…,如图10所示。

(图10)
5.从弹出的对话框中选择“User Libraries”,如图11所示。

(图11)
6. 单击下一步,我们看到,上文中创建的用户库出现在列表中,在“Struts2”前的复选框上打勾,点击“Finish”完成。如图12。

(图12)
7.将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。最直观的表现就是调用Action的execute()方法。代码如下:
代码清单1:web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern><!--<url-pattern>*.action</url-pattern>-->
</filter-mapping>
注:在Sturts1.X中,该行为由Servlet完成。
8.创建包com.lizanhong.action,并在该包中创建HelloWorldAction类,该类继承自com.opensymphony.xwork2.ActionSupport。理论上,Action可以不继承任何类或实现任何接口,以增强程序的可测试性,这也是和Struts1.X不同的地方。但是,继承自ActionSupport可以减少更多的编码工作。
在ActionSupport中,定义了方法execute(),当用户向该Action发送请求时,会自动调用。程序代码如下:
代码清单2:HelloWorldAction.java
package com.lizanhong.action;
import com.opensymphony.xwork2.ActionSupport;
publicclass HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("Action执行了。");
returnSUCCESS;
}
}
注:ActionSupport是Struts2提供的类,功能类似于Struts1.x中的Action类,该类封装了几个有用的功能,比如:
getText():从资源文件中获取国际化消息。
addFieldError():验证输入未通过时添加错误消息,支持国际化。
execute():该方法一般会被重写,当客户端向Action发送请求时,会调用此方法。
总结起来,该类主要提供了错误消息的支持和国际化支持。
在工程类路径下创建struts.xml文件,这是Struts2的配置文件,类似于Struts1.x中的struts-config.xml,在struts.xml文件中可以配置Action、Bean、Interceptor等组件。
代码清单3:struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"></include>
<package name="a" extends="struts-default">
<action name="helloworld" class="com.lizanhong.action.HelloWorldAction">
<result>/result.jsp</result>
</action>
</package>
</struts>
注:WEB应用程序的类路径是指WEB-INF/classes目录,在Eclipse中,创建在src目录下的文件最终发布后会自动复制到WEB-INF/classes目录下。
代码清单3中涉及到很多标签,以下是简单的解释:
标签名称
|
说明
|
include
|
包含其他xml文件,在示例中,这意味着struts.xml可以访问定义在struts-default.xml文件中的组件。
该元素可以使得Struts2定义多个配置文件,“分而治之”。
要注意的是,任何一个struts2配置文件都应该和struts.xml有相同的格式,包括doctype,并且可以放在类路径下的任何地方。
|
package
|
为Action或截拦器分组。
name:名称,必填项,名称自定义,没特别要求。方便别的package引用。
extends:package能继承其他的package,即通过该属性实现,值为另一个package的name。
在示例中,extends =”struts-default”是从struts-default.xml中继承的。
|
action
|
定义Action,name属性为访问时用到的名称,class属性是Action的类名。
|
result
|
根据Action的返回值定义页面导航。
Action的预定义的返回值有:
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
比如,当Action返回SUCCESS时希望转到ok.jsp页面,则可以这样写:
<result name=”success”>ok.jsp</result>
其中,name的缺省为success。
|
9.result.jsp是一个非常简单的jsp页面,输出“世界,你好”。
代码清单4:result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'result.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
世界,你好. <br>
</body>
</html>
9.发布工程,在浏览器中输入:http://localhost:8081/Struts2Demo/helloworld.action,在控制台输出“Action执行了。”
10.在浏览器的结果
struts.xml的定义文件
代码清单5:struts-2.0.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: strutsDtd -->
<!--
Struts configuration DTD.
Use the following DOCTYPE
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
-->
<!ELEMENT struts (package|include|bean|constant)*>
<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, global-results?, global-exception-mappings?, action*)>
<!ATTLIST package
name CDATA #REQUIRED
extends CDATA #IMPLIED
namespace CDATA #IMPLIED
abstract CDATA #IMPLIED
externalReferenceResolver NMTOKEN #IMPLIED
>
<!ELEMENT result-types (result-type+)>
<!ELEMENT result-type (param*)>
<!ATTLIST result-type
name CDATA #REQUIRED
class CDATA #REQUIRED
default (true|false) "false"
>
<!ELEMENT interceptors (interceptor|interceptor-stack)+>
<!ELEMENT interceptor (param*)>
<!ATTLIST interceptor
name CDATA #REQUIRED
class CDATA #REQUIRED
>
<!ELEMENT interceptor-stack (interceptor-ref+)>
<!ATTLIST interceptor-stack
name CDATA #REQUIRED
>
<!ELEMENT interceptor-ref (param*)>
<!ATTLIST interceptor-ref
name CDATA #REQUIRED
>
<!ELEMENT default-interceptor-ref (param*)>
<!ATTLIST default-interceptor-ref
name CDATA #REQUIRED
>
<!ELEMENT default-action-ref (param*)>
<!ATTLIST default-action-ref
name CDATA #REQUIRED
>
<!ELEMENT global-results (result+)>
<!ELEMENT global-exception-mappings (exception-mapping+)>
<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>
<!ATTLIST action
name CDATA #REQUIRED
class CDATA #IMPLIED
method CDATA #IMPLIED
converter CDATA #IMPLIED
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT result (#PCDATA|param)*>
<!ATTLIST result
name CDATA #IMPLIED
type CDATA #IMPLIED
>
<!ELEMENT exception-mapping (#PCDATA|param)*>
<!ATTLIST exception-mapping
name CDATA #IMPLIED
exception CDATA #REQUIRED
result CDATA #REQUIRED
>
<!ELEMENT include (#PCDATA)>
<!ATTLIST include
file CDATA #REQUIRED
>
<!ELEMENT bean (#PCDATA)>
<!ATTLIST bean
type CDATA #IMPLIED
name CDATA #IMPLIED
class CDATA #REQUIRED
scope CDATA #IMPLIED
static CDATA #IMPLIED
optional CDATA #IMPLIED
>
<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant
name CDATA #REQUIRED
value CDATA #REQUIRED
>
<!-- END SNIPPET: strutsDtd -->
总结
Struts是一个时下非常流行并被许多企业级应用程序采用的WEB框架,Struts2在Struts1.x的基础上进行了大量改造,和WebWork合二为一,引进了更多的新观念、新思想和新技术,使之更符合J2EE应用程序开发的需要。
“工欲善其事,必先利其器”,掌握一两种开发工具,能够大大提高编程效率,也能增强开发者的信心。学习一门新技术时,第一个应用程序非常重要,如果第一个最简单的程序运行不成功,会使得学习者的积极性大打折扣,这也是笔者不愿意看到的。所以,本章图文并茂地详细介绍了Struts2应用程序的开发过程,并尽可能少的提及陌生的概念和术语。
详细参照:http://tech.ddvip.com/2008-12/122889918998930.html
分享到:
相关推荐
### Struts2环境搭建知识点详解 #### 一、概述 本文档主要介绍如何在Eclipse环境下搭建Struts2框架。Struts2是一个基于MVC设计模式的Java Web应用框架,它能够帮助开发者快速构建出可扩展性强且易于维护的Web应用...
struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...
这个就是一个简单的struts2环境搭建。运行项目时候。点击提交按钮会运行后台跳到另一个页面。在后台你会看到你在文本框中输入的值被传到后台显示出来。下面你就可以吧这个值传到service层。然后数据层了。
### Struts2环境搭建及国际化知识点详解 #### 一、Struts2简介与环境搭建 **1.1 Struts2框架概述** Struts2是由Apache软件基金会提供的一个开源的MVC框架,它继承了Struts1的设计理念,并进行了大量的改进和优化...
### Struts2环境搭建及Hello World程序实现 #### 一、Struts2简介 Struts2框架是基于Struts和WebWork技术的基础上发展而来的,它不仅继承了这两个框架的优点,而且还在架构上进行了重大改进。相比于Struts1,Struts...
纯Struts2环境的搭建涉及多个步骤,包括准备必要的库文件、配置开发环境和编写配置文件。以下是详细的过程: 1. **Struts2包的准备**:在开始搭建环境之前,你需要下载并引入一些必要的Struts2库文件。这些文件包括...
本教程将详细介绍如何搭建一个基础的Struts2开发环境,这对于初学者来说是非常重要的第一步。 首先,我们需要准备必要的jar文件。在Java web开发中,jar文件是包含类库和资源的归档文件,它们提供了运行应用程序所...
### Struts2.0环境搭建知识点详解 #### 一、Struts2.0简介与应用场景 Struts2是由Apache软件基金会开发的一个开源Web应用框架,是Struts框架的升级版本,它结合了Struts1、WebWork等框架的优点,提供了一个更加...
同时,掌握Struts2的开发环境搭建,有助于你在实际项目中快速上手。传智播客的教程以通俗易懂的方式讲解,适合初学者入门学习。记得结合实际操作,理论与实践相结合,这样才能更好地掌握Struts2框架的精髓。
马士兵老师是知名的IT教育专家,他的教程在IT界享有很高的声誉,他讲解的Struts2环境搭建过程对于初学者来说是非常有价值的。 在搭建Struts2环境时,首先需要准备一些关键的JAR包。这些JAR包包括Struts2的核心库、...
struts2-2.2.3简单环境搭建例子.zip 可以直接运行的,培养自信从行动开始。 struts2-2.2.3简单环境搭建例子.zip 可以直接运行的,培养自信从行动开始。 struts2-2.2.3简单环境搭建例子.zip 可以直接运行的,培养...
struts2.3.20环境搭建详解.doc----介绍strus2.3.20环境搭建的官方文件
搭建Struts2环境的第一步是添加必要的库到项目中。这通常涉及在项目的`pom.xml`文件中添加Struts2的相关依赖,如`struts2-core`、`struts2-convention-plugin`等。如果你使用的是Eclipse或IntelliJ IDEA等IDE,可以...
### Struts2开发环境的搭建 #### 一、概述 在Java Web开发领域,Struts2框架因其灵活性和强大的功能而备受青睐。本文将详细介绍如何搭建Struts2开发环境,并提供三种不同的方法来帮助读者快速上手。无论是初学者...
在搭建Struts2.5.2环境时,首先需要确保你已经安装了以下基础工具: 1. **JDK1.8**:Java Development Kit,用于编译和运行Java代码的基础环境。 2. **Eclipse Neon (4.6)**:这是一款流行的Java集成开发环境,用于...