学习一门新技术,最好是先看到实际的效果,所以接下来的几篇文章里,我们就来个先睹为快,看看Struts2的边边角角到底是怎么使用的,等我们有了一定的作战经验,再来透彻地分析它的运行原理。
准备就绪,咱们现在就开始问候struts2吧!
Step1:新建Web项目
用Eclipse创建一个名为strut2Demo的动态Web工程。
Step2:导入Struts 2类库
在Struts 2安装目录下的lib子目录中,有很多JAR包,不同的应用需要的JAR包是不同的。表1给出了开发Struts 2程序最少需要的JAR包。
表1
基于Struts 2的Web应用程序所需要的最少类库
文 件
名
|
说
明
|
struts2-core-2.0.11.jar
|
Struts 2框架的核心类库
|
xwork-2.0.4.jar
|
XWork类库,Struts 2在其上构建
|
ognl-2.6.11.jar
|
对象图导航语言(Object Graph Navigation Language),Struts 2框架使用的一种表达式语言
|
freemarker-2.3.8.jar
|
Struts 2的UI标签的模板使用FreeMarker编写
|
commons-logging-1.0.4.jar
|
ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK
1.4+的日志记录。
|
Step3:在web.xml文件中配置FilterDispatcher
Struts 2框架是基于MVC模式开发的,它提供了一个核心控制器,用于对所有的请求进行统一处理,这个控制器是由一个名为FilterDispatcher的Servlet过滤器来充当的。
你需要在web.xml文件中配置FilterDispatcher过滤器,指定要映射到FilterDispatcher的URL样式,匹配这个URL样式的所有请求,都将被Web容器交由FilterDispatcher进行处理。以下为web.xml:
<?xml
version="1.0"
encoding="UTF-8"?>
<web-app
id="WebApp_ID"
version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>strut2(1)</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<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>
</web-app>
Step4:编写Action类
一个action就是一段只有特定的URL被请求时才会执行的代码。FilterDispatcher根据请求URL的不同,来执行对应的action。在Struts 2中,action执行的结果(成功或者失败)通常都对应着一个要呈现给用户的result,这个result可以是HTML页面,也可以是一个PDF文件,或者Excel电子表格。所有的result都是通过字符串名字来标识的,FilterDispatcher根据action返回的结果字符串来选择对应的result显示给用户。action与其对应的result是在一个名为struts.xml的配置文件中进行配置的,参见Step6。
在Struts 2中,可以用一个普通的Java类作为Action类,只要这个类提供如下的方法实现即可:
public String execute();
不过,通常情况下,我们所写的action类会选择实现com.opensymphony.xwork2.Action接口,在这个接口中除了定义了上述的execute()方法外,还定义了5个字符串类型的静态常量,如下:
/*
* Copyright (c) 2002-2006 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.xwork2;
publicinterface Action {
//action执行成功,要向用户显示成功页面,返回SUCCESS常量
publicstaticfinal String
SUCCESS =
"success";
//action执行成功,但不需要向用户显示结果页面,使用NONE常量
publicstaticfinal String
NONE =
"none";
//action执行失败,要向用户显示失败页面,返回ERROR常量
publicstaticfinal String
ERROR =
"error";
//action的执行需要用户输入更多信息,要向用户显示输入页面,返回INPUT常量
publicstaticfinal String
INPUT =
"input";
//由于用户没有登录,action不能执行,要向用户显示登录页面,返回LOGIN常量
publicstaticfinal String
LOGIN =
"login";
public String execute()
throws Exception;
}
Strtus 2中,所有的action必须返回一个字符串类型的结果代码,以标识要呈现给用户的result。
Action接口中定义的常量字符串,从语义上为你定义好了在action执行的不同情况下应该向用户呈现的result的名字,当然你可以为result取其他的名字,不过这种行为是不建议的,除非上述定义的字符串常量不能满足你的应用需求。
下面我们编写一个Action类HelloAction,实现com.opensymphony.xwork2.Action接口。
package org.leno.struts2.action;
import com.opensymphony.xwork2.Action;
publicclass HelloAction
implements Action {
private String
message;
public String getMessage() {
returnmessage;
}
public String execute()
throws Exception {
message =
"Hello,Struts2!";
returnSUCCESS;
}
}
在HelloWorldAction类中,我们定义了一个字符串类型的message实例变量,并给出了一个JavaBean风格的getter方法——getMessage(),用于获取message字段的内容。在execute()方法中,我们构造了一个问候语“Hello,Struts2!”,保存到message字段中,最后返回SUCCESS静态常量(在Action接口中定义),说明action已经成功执行。
Action返回的结果代码不一定非要对应一个要执行的result,例如,Action.NONE结果代码就没有对应任何的result。
Action已经创建完毕,接下来我们编写一个JSP页面,向用户显示问候信息。
Step5:编写结果页面
hello.jsp
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib
prefix="s"
uri="/struts-tags"
%>
<!DOCTYPE
html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><s:property
value="message"
/></h1>
</body>
</html>
注意代码中以粗体显示的部分。与Struts 1相同,Struts 2框架也提供了一套标签库。在使用Struts 2标签时,通常为标签库指定前缀“s”。属性uri的值“/struts-tags”是固定的,书写时不要忘了前导的斜杠“/”。
Struts 2的property标签带有一个value属性,在这里,我们给它的值是“message”。还记得HelloAction中的getMessage()方法吗,此处的property标签将获取到getMessage()方法调用后的返回值,即“Hello,Struts2!”,这个问候语将作为2级标题向用户显示。
Step6:在struts.xml文件中配置action
一个action创建完成后,还需要为其配置一个URL,只有这样,FilterDispatcher才知道哪一个URL对应着哪一个action,当截获到访问该URL的请求时,FilterDispatcher就调用对应的action对请求进行处理。
除了为action配置一个URL外,还需要为action关联一个或多个结果页面,当action执行完毕后返回一个结果代码(一个字符串值,例如“success”),这个结果代码对应的页面就会被呈现给用户。
要对action进行配置,需要创建struts.xml文件。struts.xml是Struts 2框架的核心配置文件,默认的路径是WEB-INF/classes/struts.xml。我们只需在项目的src目录(源文件目录)下创建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>
<package
name="default"
extends="struts-default">②
<action
name="hello"
class="org.leno.struts2.action.HelloAction">③
<result
name="success">/hello.jsp</result>④
</action>
</package>
</struts>
①
这是struts.xml配置文件的文档类型声明,注意不要写错了。
② package元素将多个action元素组织为一个逻辑单元,从而简化了维护工作,提高了可重用性。name属性指定包的名字,可选的extends属性指定要扩展的包。Struts 2中的package可以扩展另外的package,从而“继承”原有包的定义。struts-default包的定义在struts-default.xml文件中,该文件已经包含在Struts
2的核心JAR包(即struts2-core-2.0.11.jar)中了。
③ action元素用于对action进行配置。name属性为action指定一个名字,这个名字即用户访问的URL,class属性指定action的完整类名。任何对“/hello.action”的请求都会调用HelloAction类。读者要注意的是:在为action取名时,一是不要在名字前面添加斜杠(/);二是不要在名字后面添加“.action”后缀名。
④ result子元素用于建立action和result之间的关联,name属性指定result映射的名字,值“success”和HelloAction的execute()方法返回的静态常量SUCCESS(值为“success”)是一致的。要注意的是,如果result的名字是“success”,那么可以省略name属性,即④处的代码等价于
<result>/hello.jsp</result>
Step7:发布并测试
现在是万事俱备,只欠东风了,我们只需将Hello World程序发布到Tomcat服务器中,然后启动服务器,打开浏览器,输入访问action的URL
http://localhost:8080/strut2Demo/hello.action,就可以看到举世闻名的“Hello
World!”了。☺
Struts 2项目开发总结
Struts 2的开发步骤主要分为:
1.准备类库。不同的开发需求所用的类库是不一样的,但至少需要如下的5个类库。
struts2-core-2.0.11.jar
xwork-2.0.4.jar
ognl-2.6.11.jar
freemarker-2.3.8.jar
commons-logging-1.0.4.jar
2.在web.xml文件中配置FilterDispatcher。
3.开发action。针对每一个功能点,编写一个action类。
4.编写相关的结果页面。针对action返回的结果代码,编写相应的结果页面。
5.在src目录下创建struts.xml,对action进行配置,将action与结果页面关联在一起。
分享到:
相关推荐
这个"Struts2-入门学习"的主题将引导你了解Struts2的基础知识,包括其架构、核心组件、配置以及如何在实际项目中应用。 Struts2的核心组件包括: 1. **Filter Dispatcher**:这是Struts2框架的入口点,它是一个...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建企业级Java Web应用程序。它是Apache软件基金会的一个项目,旨在提供一个可扩展且灵活的框架,帮助开发者组织和控制应用逻辑,同时保持良好的用户...
对于初学者,"struts2.chm"提供了入门指导;对于有一定经验的开发者,"struts2-tags-API.chm"和"struts2 2.chm"将帮助他们更好地利用Struts2的高级特性,提升开发效率。总的来说,这个压缩包是学习和开发Struts2应用...
"struts2-blank"项目是一个基础的Struts2示例代码,可以帮助初学者快速理解和入门Struts2框架。 在Struts2框架中,核心组件包括Action、Interceptor、Result、ValueStack等。Action是业务逻辑的执行者,Interceptor...
在入门Struts2时,首先需要了解其基本概念和目录结构。Struts2的框架设计理念是提供一个半成品,即已经包含了大部分通用功能,开发者只需要关注与业务相关的部分。在提供的版本struts-2.3.15.3中,有两个示例应用:...
在这个"struts2-例子"压缩包中,我们主要关注的是一个名为"struts2-blank"的项目,这是一个基础的、空白的Struts2应用模板,用于新手快速入门和理解框架的基本工作原理。 首先,Struts2的核心在于Action类,它是...
入门程序"应该是针对初学者设计的一系列教程,旨在帮助开发者快速理解并掌握Struts2的基础用法。 在Java Web开发中,Struts2框架提供了良好的架构模式,可以有效地组织代码,提高开发效率,并且它支持多种视图技术...
11. ** strut2-docs 中的详细内容**:压缩包中的文档可能包括框架概述、快速入门指南、配置参考、API文档、插件介绍、示例代码和最佳实践等多个部分,为开发者提供全方位的学习材料。 通过阅读这些文档,开发者能够...
本教程将引导你入门Struts2的国际化功能,这是一项允许应用程序支持多种语言的重要特性。 在Struts2中实现国际化,首先你需要创建资源文件,这些文件通常以`.properties`为扩展名,例如`messages.properties`和`...
在本学习资料中,初学者将能深入理解Struts2的核心概念和工作原理,从而轻松入门。 Struts2框架的核心功能包括: 1. **请求分发**:Struts2通过Action类来处理HTTP请求。每个Action类对应一个业务逻辑,接收请求后...
这个"starting-struts2-chinese.rar"压缩包文件包含了一份中文版的"starting-struts2-chinese.pdf"文档,很显然是为帮助初学者理解和入门Struts2框架而准备的。 Struts2的核心是模型-视图-控制器(MVC)设计模式,...
这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 Jcaptcha4Struts2是基于Jcaptcha(Just Another CAPTCHA)的Struts2插件,它将Jcaptcha的功能无缝集成到Struts2...
在入门Struts2之前,需要准备以下开发环境和工具: - 开发工具:MyEclipse6(尽管它不直接支持Struts2,但可以使用其进行基础开发) - Web服务器:Tomcat6(用于部署和测试Web应用程序) - Struts版本:Struts*.*.**...
在"struts2-easyui"的例子中,我们看到的是一个基础的快速入门教程,它演示了如何将这两个技术整合在一起,实现数据的增删改查功能。下面将详细解释这个组合的应用场景、工作原理以及相关的知识点。 1. **Struts2...
这个“Struts2 的入门简单的hello”项目是一个非常适合初学者了解和学习Struts2的基础知识的实例。 首先,让我们从创建一个基本的Struts2应用开始。在Java世界里,MVC模式是web开发的核心,它将业务逻辑、数据和...
12. ** strut2-docs 中的具体文档**:可能包括框架概述、快速入门指南、配置手册、API参考、示例应用和最佳实践等内容,为开发者提供了详尽的使用指导。 学习和掌握Struts2框架,需要深入理解这些概念,并通过实际...
在"Struts2 入门\struts2基本jar包"目录下,你可以找到一组基础的jar包,这些是学习和搭建Struts2入门级应用所需的基本组件。它们包括了处理HTTP请求、映射请求到Action、视图渲染等功能的关键类。通过这些基本jar包...
此外,描述中提到的"Struts2 入门\struts2基本jar包"目录,通常会包含一些基础的入门示例和教程所需的jar包,这些可能包括了用于演示基本功能和配置的简化版本,如简单的Action类、配置文件、以及其他必要的依赖。...
1. **快速入门**:这通常是一份简明教程,帮助开发者快速了解Struts2的基本概念和配置,如Action、Result、Interceptor等,并指导如何搭建第一个运行的Struts2应用。 2. **使用文档**:这部分详细介绍了如何在实际...
输出Hello World 使用到struts2标签和jstl表达式 2、 URL:http://localhost:8080/struts100515 输入用户名XXX ------> 提交 ,显示 你好 XXX 使用ONGL表达式 3、 URL:...