好的阿杰 👍
我来帮你整理一份 《Struts 框架入门指南(中文版)》,适合初学者快速上手理解。内容会覆盖核心概念、运行机制、配置、示例代码和进阶学习路线。


Struts 框架入门指南(中文版)

一、Struts 框架简介

Struts 是 Apache 基金会推出的一个 基于 MVC 模式的 Java Web 开发框架,最早用于简化 Servlet 与 JSP 的耦合。它主要解决了 Web 开发中控制逻辑、页面视图和数据模型之间分工不清的问题。

  • 模型(Model):通常是 JavaBean、DAO、业务逻辑层
  • 视图(View):JSP 页面,负责展示数据
  • 控制器(Controller):由 Struts 的核心 Servlet(ActionServlet)承担,负责请求转发与调用业务逻辑

二、Struts 的核心组成

  1. ActionServlet
    Struts 的控制器核心,接收所有请求并决定调用哪个 Action。
  2. ActionForm
    数据传输载体(表单 bean),用于封装客户端提交的参数。
  3. Action
    处理业务逻辑的核心类,类似于 Servlet 的 doGet/doPost
  4. struts-config.xml
    框架的配置文件,定义请求路径、表单、Action 与页面的映射关系。
  5. JSP 标签库(Struts Taglib)
    简化 JSP 页面开发,避免写大量 Java 代码。

三、Struts 运行机制

一次完整的请求处理流程:

  1. 客户端发起请求(如:/login.do
  2. ActionServlet 根据 struts-config.xml 找到对应的 Action
  3. ActionForm 自动封装请求参数
  4. Action 执行业务逻辑,返回 ActionForward(下一步去哪里)
  5. ActionServlet 根据结果跳转到 JSP 或下一个 Action
  6. JSP 使用 Struts 标签库展示数据

四、Hello World 示例

1. 配置 web.xml

<web-app>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

2. 配置 struts-config.xml

<struts-config>
  <form-beans>
    <form-bean name="helloForm" type="com.demo.form.HelloForm"/>
  </form-beans>
  
  <action-mappings>
    <action path="/hello"
            type="com.demo.action.HelloAction"
            name="helloForm"
            scope="request"
            validate="false">
      <forward name="success" path="/hello.jsp"/>
    </action>
  </action-mappings>
</struts-config>

3. HelloForm.java

package com.demo.form;
import org.apache.struts.action.ActionForm;

public class HelloForm extends ActionForm {
    private String username;
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
}

4. HelloAction.java

package com.demo.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;

import com.demo.form.HelloForm;

public class HelloAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        HelloForm helloForm = (HelloForm) form;
        String name = helloForm.getUsername();
        request.setAttribute("message", "Hello, " + name + "!");
        return mapping.findForward("success");
    }
}

5. hello.jsp

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html>
  <body>
    <h2><bean:write name="message"/></h2>
  </body>
</html>

五、优点与缺点

优点:

  • 清晰的 MVC 分层
  • 内置标签库,简化 JSP
  • 社区支持广泛(经典框架)

缺点:

  • 配置繁琐(大量 XML)
  • 学习曲线较陡
  • 相比 Spring MVC、Struts2 已经较落伍

六、进阶学习路线

  1. 学习 ActionForm 的校验机制(Validator Framework)
  2. 使用 国际化(i18n) 支持多语言
  3. 了解 Struts 与 Spring、Hibernate 的整合(SSH 框架)
  4. 学习 Struts2(Struts 的升级版,基于拦截器,配置更灵活)

👉 阿杰,要不要我帮你做一个 完整的 Struts 入门 PDF 中文教程(包含图解和代码)?这样你可以直接保存下来随时翻阅。