好的阿杰 👍我来帮你整理一份 《Struts 框架入门指南(中文版)》,适合初学者快速上手理解。内容会覆盖核心概念、运行机制、配置、示例代码和进阶学习路线。
Struts 框架入门指南(中文版)
一、Struts 框架简介
Struts 是 Apache 基金会推出的一个 基于 MVC 模式的 Java Web 开发框架,最早用于简化 Servlet 与 JSP 的耦合。它主要解决了 Web 开发中控制逻辑、页面视图和数据模型之间分工不清的问题。
模型(Model):通常是 JavaBean、DAO、业务逻辑层
视图(View):JSP 页面,负责展示数据
控制器(Controller):由 Struts 的核心 Servlet(ActionServlet)承担,负责请求转发与调用业务逻辑
二、Struts 的核心组成
ActionServletStruts 的控制器核心,接收所有请求并决定调用哪个 Action。
ActionForm数据传输载体(表单 bean),用于封装客户端提交的参数。
Action处理业务逻辑的核心类,类似于 Servlet 的 doGet/doPost。
struts-config.xml框架的配置文件,定义请求路径、表单、Action 与页面的映射关系。
JSP 标签库(Struts Taglib)简化 JSP 页面开发,避免写大量 Java 代码。
三、Struts 运行机制
一次完整的请求处理流程:
客户端发起请求(如:/login.do)
ActionServlet 根据 struts-config.xml 找到对应的 Action
ActionForm 自动封装请求参数
Action 执行业务逻辑,返回 ActionForward(下一步去哪里)
ActionServlet 根据结果跳转到 JSP 或下一个 Action
JSP 使用 Struts 标签库展示数据
四、Hello World 示例
1. 配置 web.xml
2. 配置 struts-config.xml
type="com.demo.action.HelloAction" name="helloForm" scope="request" validate="false">
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" %>
五、优点与缺点
优点:
清晰的 MVC 分层
内置标签库,简化 JSP
社区支持广泛(经典框架)
缺点:
配置繁琐(大量 XML)
学习曲线较陡
相比 Spring MVC、Struts2 已经较落伍
六、进阶学习路线
学习 ActionForm 的校验机制(Validator Framework)
使用 国际化(i18n) 支持多语言
了解 Struts 与 Spring、Hibernate 的整合(SSH 框架)
学习 Struts2(Struts 的升级版,基于拦截器,配置更灵活)
👉 阿杰,要不要我帮你做一个 完整的 Struts 入门 PDF 中文教程(包含图解和代码)?这样你可以直接保存下来随时翻阅。