struts2教程使用教程:Struts2 入门与实战,从环境搭建到第一个Hello World应用
Struts2 是一个基于 Java 的 Web 应用框架,它遵循 MVC(模型-视图-控制器)设计模式,用于构建灵活、可扩展的 Web 应用程序,虽然随着 Spring Boot 等全栈式框架的兴起,Struts2 的使用率有所下降,但它仍然是许多企业级应用中稳定可靠的选择,尤其在需要与旧系统集成或特定场景下,本文将为你提供一个 Struts2 的基础使用教程,带你快速入门。
Struts2 概述
Struts2 是 WebWork 框架的后继者,它吸收了 WebWork 的优点并进行了改进,其核心思想是将控制器逻辑(Action)与业务逻辑(Model)和展示逻辑(View)分离,使得代码结构清晰,易于维护和测试。
环境准备
在开始编写代码之前,你需要准备以下环境:
- JDK: 确保已安装 Java 开发工具包 (JDK)。
- Servlet 容器: 如 Apache Tomcat。
- IDE: 如 IntelliJ IDEA, Eclipse, NetBeans 等。
- Struts2 框架库: 下载 Struts2 的核心库和依赖库,可以通过 Maven 或 Gradle 管理依赖,或者手动下载
struts2-core-x.x.x.jar及其依赖的库(通常放在WEB-INF/lib目录下)。 - Web 服务器: 如 Apache Tomcat。
核心概念
理解 Struts2 的核心组件是掌握其使用的基础:
- Action: 这是 Struts2 应用中最核心的组件,扮演着控制器的角色,一个 Action 类通常处理一个或多个用户请求,并返回一个字符串(表示逻辑视图名或结果名),最终由 Struts2 框架根据配置将其映射到相应的视图(如 JSP 页面)。
- ActionSupport: 这是一个常用的基类 Action,提供了许多实用的方法,如
addActionMessage()(添加成功信息)、addActionError()(添加错误信息) 以及常用的属性验证方法 (validate()和validateable接口)。 - 拦截器 (Interceptor): Struts2 的核心是基于拦截器的,拦截器允许你拦截 Action 的执行过程,并在请求处理的不同阶段(如验证、日志记录、文件上传、类型转换等)进行干预,默认提供了一系列拦截器,你也可以自定义拦截器。
- 值栈 (Value Stack): Struts2 使用值栈来存储请求参数、Action 属性和模型数据,并将其暴露给视图(JSP),值栈由
ValueStack对象管理,包含一个根对象(通常是 Action 实例)和一个上下文 Map。 - OGNL 表达式语言: Object-Graph Navigation Language,是 Struts2 内部用于访问和操作对象图的强大表达式语言,用于在 Action 和 JSP 之间传递数据。
- 配置文件: 主要包括
struts.xml文件,它是 Struts2 的核心配置文件,用于定义:- 包(Package)及其继承关系。
- Action 映射:将 URL 请求映射到具体的 Action 类和方法。
- 全局结果(Result)定义。
- 拦截器栈(Interceptor Stack)的定义。
- 结果 (Result): 定义了 Action 执行后返回的响应类型,如
success(默认)、error、input、redirect、redirectAction等,每个结果通常对应一个视图资源(如 JSP 页面)。
创建第一个 Struts2 应用
下面是一个简单的示例,创建一个返回 “Hello World” 的 Struts2 Action。
-
创建 Web 项目: 在你的 IDE 中创建一个标准的 Java Web 项目。
-
添加 Struts2 依赖: 确保将 Struts2 核心 JAR 文件添加到项目的
WEB-INF/lib目录下。 -
创建 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"; } } -
配置
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 页面。
-
创建 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属性。 -
部署和运行: 将你的 Web 项目部署到 Tomcat 服务器,然后启动服务器,在浏览器中访问
http://localhost:8080/YourApp/helloWorld.action(请将YourApp替换为你的应用上下文路径),你应该能看到 “Hello World from Struts2!” 的消息。
总结与学习建议
这个简单的示例展示了 Struts2 的基本工作流程:用户请求 -> Action 处理 -> 返回结果 -> 跳转视图,要深入掌握 Struts2,你需要学习:
- 配置文件详解:
struts.xml的高级配置,如拦截器的使用、通配符映射、国际化的配置等。 - 结果类型: 除了
success,还有error、input、redirect、redirectAction等,理解它们的区别和用法。 - 类型转换: 如何处理请求参数到 Action 属性的类型转换。
- 验证: 使用 Struts2 内置的验证或集成第三方验证框架。
- 标签库: Struts2 提供了强大的标签库,用于简化 JSP 开发。
- 依赖注入 (DI) 和面向切面编程 (AOP): Struts2 可以与 Spring 等框架集成,实现依赖注入和面向切面编程。
希望这个基础教程能帮助你顺利开始 Struts2 的学习和使用!

相关文章:
文章已关闭评论!