返回

struts2教程使用教程:Struts2 入门与实战,从环境搭建到第一个Hello World应用

来源:网络   作者:   日期:2025-11-10 13:04:40  

Struts2 是一个基于 Java 的 Web 应用框架,它遵循 MVC(模型-视图-控制器)设计模式,用于构建灵活、可扩展的 Web 应用程序,虽然随着 Spring Boot 等全栈式框架的兴起,Struts2 的使用率有所下降,但它仍然是许多企业级应用中稳定可靠的选择,尤其在需要与旧系统集成或特定场景下,本文将为你提供一个 Struts2 的基础使用教程,带你快速入门。

Struts2 概述

Struts2 是 WebWork 框架的后继者,它吸收了 WebWork 的优点并进行了改进,其核心思想是将控制器逻辑(Action)与业务逻辑(Model)和展示逻辑(View)分离,使得代码结构清晰,易于维护和测试。

环境准备

在开始编写代码之前,你需要准备以下环境:

  1. JDK: 确保已安装 Java 开发工具包 (JDK)。
  2. Servlet 容器: 如 Apache Tomcat。
  3. IDE: 如 IntelliJ IDEA, Eclipse, NetBeans 等。
  4. Struts2 框架库: 下载 Struts2 的核心库和依赖库,可以通过 Maven 或 Gradle 管理依赖,或者手动下载 struts2-core-x.x.x.jar 及其依赖的库(通常放在 WEB-INF/lib 目录下)。
  5. Web 服务器: 如 Apache Tomcat。

核心概念

理解 Struts2 的核心组件是掌握其使用的基础:

  1. Action: 这是 Struts2 应用中最核心的组件,扮演着控制器的角色,一个 Action 类通常处理一个或多个用户请求,并返回一个字符串(表示逻辑视图名或结果名),最终由 Struts2 框架根据配置将其映射到相应的视图(如 JSP 页面)。
  2. ActionSupport: 这是一个常用的基类 Action,提供了许多实用的方法,如 addActionMessage() (添加成功信息)、addActionError() (添加错误信息) 以及常用的属性验证方法 (validate()validateable 接口)。
  3. 拦截器 (Interceptor): Struts2 的核心是基于拦截器的,拦截器允许你拦截 Action 的执行过程,并在请求处理的不同阶段(如验证、日志记录、文件上传、类型转换等)进行干预,默认提供了一系列拦截器,你也可以自定义拦截器。
  4. 值栈 (Value Stack): Struts2 使用值栈来存储请求参数、Action 属性和模型数据,并将其暴露给视图(JSP),值栈由 ValueStack 对象管理,包含一个根对象(通常是 Action 实例)和一个上下文 Map。
  5. OGNL 表达式语言: Object-Graph Navigation Language,是 Struts2 内部用于访问和操作对象图的强大表达式语言,用于在 Action 和 JSP 之间传递数据。
  6. 配置文件: 主要包括 struts.xml 文件,它是 Struts2 的核心配置文件,用于定义:
    • 包(Package)及其继承关系。
    • Action 映射:将 URL 请求映射到具体的 Action 类和方法。
    • 全局结果(Result)定义。
    • 拦截器栈(Interceptor Stack)的定义。
  7. 结果 (Result): 定义了 Action 执行后返回的响应类型,如 success (默认)、errorinputredirectredirectAction 等,每个结果通常对应一个视图资源(如 JSP 页面)。

创建第一个 Struts2 应用

下面是一个简单的示例,创建一个返回 “Hello World” 的 Struts2 Action。

  1. 创建 Web 项目: 在你的 IDE 中创建一个标准的 Java Web 项目。

  2. 添加 Struts2 依赖: 确保将 Struts2 核心 JAR 文件添加到项目的 WEB-INF/lib 目录下。

  3. 创建 Action 类:

    package com.example.action;
    import com.opensymphony.xwork2.ActionSupport;
    public class HelloWorldAction extends ActionSupport {
        private String message;
        // Getter 和 Setter 方法
        public String getMessage() {
            return message;
        }
        public void setMessage(String message) {
            this.message = message;
        }
        // 执行方法,Struts2 会自动调用
        public String execute() throws Exception {
            // 设置消息
            this.message = "Hello World from Struts2!";
            // 返回结果字符串 "success"
            return "success";
        }
    }
  4. 配置 struts.xml:

    WEB-INF 目录下创建 struts.xml 文件,并添加以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5.2//EN" "http://struts.apache.org/dtds/struts-2.5.2.dtd">
    <struts>
        <!-- 定义一个包,包含相关的 Action、拦截器等 -->
        <package name="default" namespace="/" extends="struts-default">
            <!-- 定义具体的 Action -->
            <action name="helloWorld" class="com.example.action.HelloWorldAction">
                <!-- 定义 Action 的结果 -->
                <result name="success">/WEB-INF/jsp/hello.jsp</result>
            </action>
        </package>
    </struts>
    • name="helloWorld": 定义了访问 Action 的 URL 映射,http://localhost:8080/YourApp/helloWorld.action
    • class="com.example.action.HelloWorldAction": 指定处理该请求的 Action 类。
    • <result name="success">/WEB-INF/jsp/hello.jsp</result>: 指定当 Action 返回 success 结果时,跳转到哪个 JSP 页面。
  5. 创建 JSP 视图 (hello.jsp):

    WEB-INF/jsp 目录下创建 hello.jsp 文件:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>${message}</h1>
    </body>
    </html>

    这里使用了 OGNL 表达式 ${message} 来从值栈中获取 HelloWorldAction 中设置的 message 属性。

  6. 部署和运行: 将你的 Web 项目部署到 Tomcat 服务器,然后启动服务器,在浏览器中访问 http://localhost:8080/YourApp/helloWorld.action (请将 YourApp 替换为你的应用上下文路径),你应该能看到 “Hello World from Struts2!” 的消息。

总结与学习建议

这个简单的示例展示了 Struts2 的基本工作流程:用户请求 -> Action 处理 -> 返回结果 -> 跳转视图,要深入掌握 Struts2,你需要学习:

  • 配置文件详解: struts.xml 的高级配置,如拦截器的使用、通配符映射、国际化的配置等。
  • 结果类型: 除了 success,还有 errorinputredirectredirectAction 等,理解它们的区别和用法。
  • 类型转换: 如何处理请求参数到 Action 属性的类型转换。
  • 验证: 使用 Struts2 内置的验证或集成第三方验证框架。
  • 标签库: Struts2 提供了强大的标签库,用于简化 JSP 开发。
  • 依赖注入 (DI) 和面向切面编程 (AOP): Struts2 可以与 Spring 等框架集成,实现依赖注入和面向切面编程。

希望这个基础教程能帮助你顺利开始 Struts2 的学习和使用!

struts2教程使用教程:Struts2 入门与实战,从环境搭建到第一个Hello World应用

分类: 编程
责任编辑: 今题网
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

文章已关闭评论!