在本系列教程中我们将学习到
Struts2的各种技术。在本教程中使用的工具和程序库的版本如下:
开发工具:
MyEclipse6
Web服务器:
Tomcat6
Struts版本:
Struts2.0.11.1
JDK版本:
JDK1.5.0_12
J2EE版本:
Java EE5.0
在本系列教程中
Web工程的上下文路径都是
struts2,如果在
Web根目录有一个
index.jsp文件,则访问路径如下:
http://localhost:8080/struts2/index.jsp
由于
MyEclipse6目前并不支持
Struts2,所以我们需要到
struts.apache.org去下载
Struts2安装包。要想正常使用
Struts2,至少需要如下五个包(可能会因为
Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。
struts2-core-2.0.11.1.jar
xwork-2.0.4.jar
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了
Struts1.x的方式(当然,
Struts2仍然是基于
MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。
Struts2实际上是在
Webwork基础上构建起来的
MVC框架。我们从
Struts2的源代码中可以看到,有很多都是直接使用的
xwork(Webwork的核心技术
)的包。既然从技术上来说
Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。
如果大家使用过
Struts1.x,应该对建立基于
Struts1.x的
Web程序的基本步骤非常清楚。让我们先来回顾一下建立基于
Struts1.x的
Web程序的基本步骤。
1.
安装
Struts。由于
Struts的入口点是
ActionServlet,所以得在
web.xml中配置一下这个
Servlet。
2.
编写
Action类(一般从
org.apache.struts.action.Action类继承)。
3.
编写
ActionForm类(一般从
org.apache.struts.action.ActionForm类继承),这一步不是必须的,如果要接收客户端提交的数据,需要执行这一步。
4.
在
struts-config.xml文件中配置
Action和
ActionForm。
5.
如果要
采集用户录入的数据,一般需要编写若干
JSP页面,并通过这些
JSP页面中的
form将数据提交给
Action。
下面我们就按着编写
struts1.x程序的
这五步和
struts2.x程序的编写过程一一对应,看看它们谁更“酷”。下面我们来编写一个基于
Struts2的
Web程序。这个程序的功能是让用户录入两个整数,并提交给一个
Struts Action,并计算这两个数的代数和,如果代码和为非负数,则跳转到
positive.jsp页面,否则跳转到
negative.jsp页面。
【第
1
步】
安装
Struts2
这一步对于
Struts1.x和
Struts2都是必须的,只是安装的方法不同。
Struts1的入口点是一个
Servlet,而
Struts2的入口点是一个过滤器
(Filter)。因此,
Struts2要按过滤器的方式配置。下面是在
web.xml中配置
Struts2的代码:
<
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
>
</
filter-mapping
>
【第
2
步】
编写
Action类
这一步和
Struts1.x
也必须进行。只是
Struts1.x
中的动作类必须从
Action
类中继承,而
Struts2.x
的动作类需要从
com.opensymphony.xwork2.ActionSupport
类继承。下面是计算两个整数代码和的
Action
类,代码如下:
package
action;
import
com.opensymphony.xwork2.ActionSupport;
public
class
FirstAction
extends
ActionSupport
{
private
int
operand1;
private
int
operand2;
public
String execute()
throws
Exception
{
if
(getSum()
>=
0
)
//
如果代码数和是非负整数,跳到positive.jsp页面
{
return
"
positive
"
;
}
else
//
如果代码数和是负整数,跳到negative.jsp页面
{
return
"
negative
"
;
}
}
public
int
getOperand1()
{
return
operand1;
}
public
void
setOperand1(
int
operand1)
{
System.out.println(operand1);
this
.operand1
=
operand1;
}
public
int
getOperand2()
{
return
operand2;
}
public
void
setOperand2(
int
operand2)
{
System.out.println(operand2);
this
.operand2
=
operand2;
}
public
int
getSum()
{
return
operand1
+
operand2;
//
计算两个整数的代码数和
}
}
从上面的代码可以看出,动作类的一个特征就是要覆盖
execute方法,只是
Struts2的
execute方法没有参数了,而
Struts1.x的
execute方法有四个参数。而且
execute方法的返回值也不同的。
Struts2只返回一个
String,用于表述执行结果(就是一个标志)。上面代码的其他部分将在下面讲解。
【第
3
步】
编写
ActionForm类
在本例中当然需要使用
ActionForm了。在
Struts1.x中,必须要单独建立一个
ActionForm类(或是定义一个动作
Form),而在
Struts2中
ActionForm和
Action已经二合一了。从第二步的代码可以看出,后面的部分就是应该写在
ActionForm类中的内容。所以在第
2步,本例的
ActionForm类已经编写完成(就是
Action类的后半部分)。
【第
4
步】
配置
Action类
这一步
struts1.x
和
struts2.x
都是必须的,只是在
struts1.x
中的配置文件一般叫
struts-config.xml
(当然也可以是其他的文件名),而且一般放到
WEB-INF
目录中。而在
struts2.x
中的配置文件一般为
struts.xml
,放到
WEB-INF"classes
目录中。下面是在
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
="struts2"
namespace
="/mystruts"
extends
="struts-default"
>
<
action
name
="sum"
class
="action.FirstAction"
>
<
result
name
="positive"
>
/positive.jsp
</
result
>
<
result
name
="negative"
>
/negative.jsp
</
result
>
</
action
>
</
package
>
</
struts
>
在
<struts>标签中可以有多个
<package>,第一个
<package>可以指定一个
Servlet访问路径(不包括动作名),如“
/mystruts”。
extends属性继承一个默认的配置文件“
struts-default”,一般都继承于它,大家可以先不去管它。
<action>标签中的
name属性表示动作名,
class表示动作类名。
<result>标签的
name实际上就是
execute方法返回的字符串,如果返回的是“
positive”,就跳转到
positive.jsp页面,如果是“
negative”,就跳转到
negative.jsp页面。在
<struts>中可以有多个
<package>,在
<package>中可以有多个
<action>。我们可以用如下的
URL来访问这个动作:
http://localhost:8080/struts2/mystruts/sum.action
注
:
Struts1.x的动作一般都以
.do结尾,而
Struts2是以
.action结尾。
【第
5
步】
编写用户录入接口(
JSP页面)
1.
主界面(
sum.jsp
)
在
Web根目录建立一个
sum.jsp,代码如下:
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
GBK
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<
html
>
<
head
>
<
title
>
输入操作数
</
title
>
</
head
>
<
body
>
求代数和
<
br
/>
<
s:form
action
="mystruts/sum.action"
>
<
s:textfield
name
="operand1"
label
=" 操作数1"
/>
<
s:textfield
name
="operand2"
label
=" 操作数2"
/>
<
s:submit
value
="代数和"
/>
</
s:form
>
</
body
>
</
html
>
在
sum.jsp中使用了
Struts2带的
tag。在
Struts2中已经将
Struts1.x的好几个标签库都统一了,在
Struts2中只有一个标签库
/struts-tags。这里面包含了所有的
Struts2标签。但使用
Struts2的标签大家要注意一下。在
<s:form>中最好都使用
Struts2标签,尽量不要用
HTML或普通文本,大家可以将
sum.jsp的代码改为如下的形式,看看会出现什么效果:
... ...
求代数和
<br/>
<s:form action="mystruts/sum.action" >
操作数
1:
<s:textfield name="operand1" /><br/>
操作数
2:
<s:textfield name="operand1" /><br/>
<s:submit value="代数和
" />
</s:form>
... ...
提示一下,在
<s:form>中
Struts2使用
<table>定位。
2.
positive.jsp
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
GBK
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<
html
>
<
head
>
<
title
>
显示代数和
</
title
>
</
head
>
<
body
>
代数和为非负整数
<
h1
><
s:property
value
="sum"
/></
h1
>
</
body
>
</
html
>
3.
negative.jsp
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
GBK
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<
html
>
<
head
>
<
title
>
显示代数和
</
title
>
</
head
>
<
body
>
代数和为负整数
<
h1
><
s:property
value
="sum"
/></
h1
>
</
body
>
</
html
>
这两个
jsp页面的实现代码基本一样,只使用了一个
<s:property>标签来显示
Action类中的
sum属性值。
<s:property>标签是从
request对象中获得了一个对象中得到的
sum属性,如我们可以使用如下的代码来代替
<s:property value=”sum”/>:
<%
com.opensymphony.xwork2.util.OgnlValueStack ovs =
(com.opensymphony.xwork2.util.OgnlValueStack)request.getAttribute("struts.valueStack");
out.println(ovs.findString("sum"));
%>
启动
Tomcat后,在
IE中输入如下的
URL来测试这个例子:
http://localhost:8080/struts2/sum.jsp
分享到:
- 2009-02-09 15:10
- 浏览 1346
- 评论(0)
- 论坛回复 / 浏览 (0 / 10588)
- 查看更多
相关推荐
为了解决这一问题,社区开发了第三方工具如Struts TestCase,它提供了一套用于模拟Struts1环境的组件。 - **Struts2**: 在Struts2中,可以通过初始化、设置属性和调用方法等方式轻松地测试Action。依赖注入的支持...
3. **创建第一个Struts 2应用**:通过创建简单的Action类和配置文件,实现用户请求到响应的过程。 4. **Action和Result**:深入理解Action类的设计和Result的使用,了解不同的Result类型。 5. **拦截器**:学习...
Struts2 Struts2 Struts2 教程 1 1 1 :第一个 Struts2 Struts2 Struts2 程序 在本系列教程中我们将学习到 Struts2 的各种技术。在本教程中使用的工具和程序库的版本 如下: 开发工具: MyEclipse6 Web 服务器: ...
本教程将深入探讨如何创建并运行你的第一个Struts2程序。 首先,我们需要了解Struts2的核心概念。Struts2框架提供了一种分层架构,它通过Action类处理用户请求,Action类与业务逻辑交互,并通过Result返回视图。...
struts2学习教程包括:第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传...
Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。本教程将介绍Struts2的基础知识,适合初学者入门。Struts2是在Webwork的基础上构建的,与它的前辈Struts1.x相比,虽然在大...
7. **编写第一个Action**:创建一个Action类,实现你需要的业务逻辑,并指定结果页面。 8. **编写结果页面**:创建一个JSP页面,用于显示Action执行后的结果。 9. **配置struts.xml**:在struts.xml中配置Action,...
本教程将逐步引导你了解并实践这些核心概念,从创建第一个Struts2项目,到配置Action、编写拦截器、处理表单提交、实现文件上传,再到利用Tiles进行页面布局,一步步深化对Struts2的理解。无论你是初学者还是有经验...
通过本书,读者可以学习如何设置Struts项目环境,创建第一个Struts应用,理解Struts的工作流程,编写Action类,以及使用Struts的标签库简化JSP页面的编写。同时,书中提供的实例将帮助读者巩固理论知识,提高实际...
### 建立第一个Struts2应用程序:深入解析与实践 #### Struts2入门与环境搭建 在构建第一个Struts2应用程序的过程中,我们不仅需要掌握基本的开发流程,还应了解其与Java、Hibernate和Spring等框架的整合方法。...
"strut2课程源代码第一天及说明"可能包含了逐步的教程,指导你从零开始搭建和运行一个简单的Struts2应用。 标签"struts2例子代码"表明这些源代码包含了具体的操作示例,比如Action类的编写、配置文件的设置、拦截器...
**Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)设计模式,通过将业务逻辑、数据管理和用户界面分离,简化了Web应用程序的开发...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展且易于管理的企业级Web应用。这个项目教程可能包含了从基础到高级的Struts2应用开发的全方位指导。以下是基于标题、描述和标签的一些关键知识点: 1...
本教程将引导你逐步学习如何创建并运行你的第一个Struts2应用程序。 在开始之前,你需要确保已经安装了Java Development Kit (JDK) 和 Apache Tomcat 服务器,因为它们是运行Struts2应用的基础。此外,你还需要下载...
“1 ready.pdf”可能涵盖了如何快速启动一个Struts2项目,包括环境配置、依赖库的引入,以及创建第一个简单的Hello World应用。这部分可能会讲解如何创建和配置struts.xml配置文件,这是Struts2应用的入口点。 “2 ...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于开发Java EE的Web应用程序。它在企业级Java应用开发中被广泛使用,尤其是在建立动态Web页面方面。作为一个基于WebWork核心的框架,Struts2在许多方面对...
- **Struts 1**:作为第一个发布的MVC框架,Struts 1在发布之初便受到广泛关注。它基于Servlet和JSP技术,提供了强大的表单验证、国际化支持等功能,但随着项目规模的增长,其局限性逐渐显现,如配置繁琐、不易扩展...
这个问题搞了一个晚上。(希望对初学的朋友有帮助) 发现不能运行的原因 1、login.jsp的form表格里的action是在struts.xml中的name的属性的名字后面加上.action 例如: 2、web.xml中 org.apache.struts2.dispatcher...
Struts2是一个强大的Java ...总的来说,Struts2是一个功能强大且成熟的MVC框架,其jar包的引入是搭建Struts2应用的第一步。正确理解和使用这些jar包以及框架的核心概念,能够帮助我们更高效地开发和维护Java Web项目。
本教程将指导新手配置第一个基于Struts2的简单登录程序。 首先,你需要从Apache Struts的官方网站下载Struts2的软件包。在编写此教程时,最新版本为Struts 2.0.11.2,但请注意,随着时间推移,可能会有新的版本发布...