从入门到精通!完整详细的struts2教程!

作者:青岛麻将开发公司 阅读:17 次 发布时间:2025-06-19 21:04:31

摘要:Struts2是一个开源的MVC框架,是一种轻量级的Web应用开发框架。它使用Java编写,能够帮助开发者快速开发Web应用程序。Struts2框架使用MVC设计模式,将业务逻辑、数据访问和UI分离。Struts2也提供了非常好的标签库和Interceptors,使得开发Web应用程序变得更加容易和快速。本教...

Struts2是一个开源的MVC框架,是一种轻量级的Web应用开发框架。它使用Java编写,能够帮助开发者快速开发Web应用程序。Struts2框架使用MVC设计模式,将业务逻辑、数据访问和UI分离。Struts2也提供了非常好的标签库和Interceptors,使得开发Web应用程序变得更加容易和快速。

从入门到精通!完整详细的struts2教程!

本教程将教你如何使用Struts2开发Web应用程序。在本教程中,我们将从基础入门开始,一步步地涵盖所有Struts2的主要特性和功能。我们将探讨如何使用Struts2框架进行Web应用程序开发,并涉及到Struts2的配置和重要组件。在学完本教程后,你将能够使用Struts2框架来构建自己的Web应用程序。

下面我们开始探讨Struts2的最基础部分-如何使用Struts2框架创建Web应用程序。

第一步:配置Struts2框架

在使用Struts2框架之前,我们需要进行一些配置。Struts2使用一个名为“struts.xml”的配置文件,负责配置应用的实际行为。在这个文件中,我们定义了一个或多个逻辑控制器,每个控制器处理一部分请求。逻辑控制器与Struts2框架中的Action相关联,Action负责处理HTTP请求并返回HTTP响应。

下面是一个基本的struts.xml配置:

```xml

?xml version="1.0" encoding="UTF-8"?>

/success.jsp

```

在这个配置文件中,我们使用包(package)元素定义了一个名为“default”的新包,并扩展了Struts自己的默认包。在包里,我们定义了一个名为“helloWorld”的新操作,并将其映射到HelloWorldAction类上。我们指定了“method”属性,告诉Struts2框架,在执行这个操作时要调用哪个方法。在这个例子中,我们调用默认的“execute”方法。最后,我们指定result元素,告诉Struts2框架在成功时要返回的视图(views)。

第二步:创建Action类

接下来,我们需要创建Action类。Action类负责处理HTTP请求并返回HTTP响应。在我们的示例中,我们要创建一个名为HelloWorldAction的Action类,用于响应我们前面定义的“helloWorld”操作。

```java

package com.tutorialspoint.struts2;

public class HelloWorldAction {

private String message;

public String execute() throws Exception {

setMessage("Hello World!");

return "success";

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

```

在这个Action类中,我们定义了一个名为“message”的属性,并为它提供了getter和setter方法。在我们的例子中,我们定义了一个名为“execute”的方法,该方法负责处理请求并返回我们的消息字符串。在这里,我们将消息字符串设置为“Hello World!”,然后返回“success”视图(views)。

第三步:定义View

最后,我们需要定义View。View负责将内容呈现给用户。在我们前面的示例中,我们已经定义了一个“success”视图,并告诉Struts2框架要将其与“helloWorld”操作相关联。

我们需要创建一个名为“success.jsp”的JSP页面,并将其放置在与我们前面定义的视图相同的位置。在这个JSP页面中,我们将使用JSP表达式(EL)来显示从Action类中传递的消息。以下是一个成功的JSP视图:

```html

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

Hello World

```

在我们的JSP页面中,我们为Struts2标签库定义了一个前缀(s)。我们使用Struts2标签库中的属性(property)标记来引用Action类的“message”属性。在JSP页面中,我们将使用带有[h2]标签的“message”属性来显示消息字符串。

好了,现在我们已经配置好Struts2框架,创建了HelloWorld Action类,定义了一个View,并将它们合在一起。我们不确定它是否能正常工作。所以我们要将它部署到应用程序服务器(如Tomcat,Jboss等)上,并启动应用程序服务器,可以对应用程序进行测试。

你现在可以访问部署在应用程序服务器中的应用程序,并在URL中添加以下内容:[http://localhost:8080/HelloWorld/helloWorld.action]。如果Struts2应用程序已经成功部署,你将看到“Hello World!”这个消息。

至此,我们已经完成了本教程的第一部分。现在,我们深入探讨如何使用Struts2框架进行更高级的Web应用程序开发。我们将涵盖Struts2中重要的组件,如Validators和Interceptors,以及如何使用它们来构建更高级的Web应用程序。

第四步:使用Validators

当我们开发Web应用程序时,数据验证是至关重要的。Validators是用户输入合法性验证的一种重要机制。Validators用于验证用户输入的数据是否满足特定条件,例如数据是否大于或小于某个值,是否是正确的电子邮件格式等。

Struts2框架提供了一组内置Validators,我们可以使用它们来验证用户输入。下面,我们来看一个使用Struts2 Validators的示例。

```xml

"http://struts.apache.org/dtds/struts-2.0.dtd">

/login.jsp

/welcome.jsp

name.length() <= 10

Name should not be greater than 10 characters.

.*@tutorialspoint\.com

Email should be in tutorialspoint.com domain.

```

在这个示例中,我们定义了两个Validators-FieldExpression Validator和Regex Validator。FieldExpression Validator是一种基于表达式的验证方法。在这个示例中,我们检查用户的姓名是否小于或等于10个字符。Regex Validator是一种基于正则表达式的验证方法。在这个示例中,我们检查用户输入的电子邮件是否属于tutorialspoint.com域。

我们还定义了一个名为“login”的Action,此Action与LoginAction类相关联。在这个示例中,我们将定义两个结果,“success”和“error”。

现在,我们来看一下LoginAction类,该类完成实际的验证并返回响应结果。以下是一个简单的LoginAction类:

```java

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private static final long serialVersionUID = 2L;

private String name;

private String email;

public String execute() throws Exception {

return "success";

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}

```

在我们的LoginAction类中,我们通过继承Struts2的ActionSupport类来获得Struts2提供的基本功能。我们还定义了两个属性“name”和“email”来保存用户输入的值。注:这里name和email必须与struts.xml中Param的name属性值相同,否则会报如下错误信息:

```bash

org.apache.struts2.dispatcher.Dispatcher error SEVERE: Dispatcher initialization failed: Unable to find a validator for …

```

为了使Struts2能够使用Validators,我们必须使用Struts2提供的标签库来定义表单。Struts2标记库中的标记可以用于定义表单,并使用Validators来验证表单。下面是一个使用Struts2标记库的示例:

```html

<%@ taglib prefix="s" uri="/struts-tags"%>

Login



```

在这个JSP页面中,我们使用了Struts2的标记来定义表单。我们使用标签为用户输入的数据提供文本框,标记用于显示验证错误。最后,我们使用标记向服务器提交表单数据。

现在我们已经学习了如何使用Validators进行数据验证。我们可以扩展这个示例以适应自己的业务需求,并使用Struts2标记库中提供的其他Validators。

第五步:使用Interceptors

Interceptors是Struts2框架中的又一个重要概念。Interceptors可以用于执行一些任务,例如记录日志、处理异常、实现事务处理等。Interceptors可以在Action被执行之前和之后运行,此外还可以将其应用于整个应用程序。

Struts2中有许多内置的Interceptors,如ExceptionInterceptor、I18nInterceptor、ValidationInterceptor等。让我们来看看一些这些内置的Interceptors。

- ExceptionInterceptor: 用于捕获并处理Action中所抛出的异常。例如,在执行业务逻辑时可能会触发异常。异常拦截器可以用来记录异常、发送警报、更新错误页面等。

- I18nInterceptor: 用于在Struts2应用程序中使用国际化(i18n)的功能。I18n Interceptor可以实现在不同语言之间方便的切换,并优雅地处理参数化消息。

- ValidationInterceptor: 用于在Action被执行之前执行Validation操作。Validation Interceptor使用Validators来验证Action中的表单数据。如果Validation失败,则将重定向回前一个页面,并显示错误消息。

下面,我们来看一个使用Interceptors的示例:

```xml

"http://struts.apache.org/dtds/struts-2.0.dtd">

/login.jsp

/welcome.jsp

```

在这个示例中,我们定义了一个名为“loggingInterceptor”的新Interceptors,并扩展了Interceptors栈(Interceptor Stack)。若要使用新的Interceptors,我们必须将此拦截器堆栈与适当的操作相关联。在我们的示例中,我们将默认Interceptors设置为“interceptorStack”及相关联的Interceptors。

对于Logging Interceptor,我们需要创建一个名为LoggingInterceptor的Java类,以实现它所需的方法。以下是LoggingInterceptor类的代码:

```java

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoggingInterceptor extends AbstractInterceptor{

private static final long serialVersionUID = 3L;

public String intercept(ActionInvocation invocation) throws Exception {

String className = invocation.getAction().getClass().getSimpleName();

System.out.println("Before calling method: " + className);

String result = invocation.invoke();

System.out.println("After calling method: " + className);

return result;

}

}

```

在这个LoggingInterceptor类中,我们实现了AbstractInterceptor类中的intercept方法。intercept方法负责在Action被调用之前和之后执行的任务。在我们的示例中,我们在调用Action之前和之后记录了日志。

现在,我们已经学习了如何使用Interceptors来记录Action的日志。我们可以轻松地扩展这个示例,以适应我们自己的需求,例如在Action执行期间记录跟踪信息或检查用户是否已经经过身份验证。

总结

在本教程中,我们涵盖了Struts2框架的许多重要概念。我们讨论了如何配置Struts2框架、创建Action类、定义View,以及如何使用Validators和Interceptors。通过学习这些概念,开发者现在能够轻松地构建自己的Struts2 Web应用程序,并自信地将其部署到生产环境中。

在以后的文章中,我们将探讨更高级的Struts2主题,如使用Ajax进行异步Web应用程序开发、使用Spring与Struts2集成、在Struts2中使用Freemarker模板等。请关注更多精彩内容。

  • 原标题:从入门到精通!完整详细的struts2教程!

  • 本文链接:https://qipaikaifa.cn/zxzx/17429.html

  • 本文由深圳中天华智网小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与中天华智网联系删除。
  • 微信二维码

    ZTHZ2028

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:157-1842-0347


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部