<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> Struts2 学习实验台
Struts2 学习实验台

把零散示例整理成一条可讲解、可演示、可验证的学习路线

这个入口页现在不再只是样例链接集合,而是把经典 Struts2 的动作映射、参数绑定、Session 登录、表单校验和文件上传串成一个可循序学习的 Demo 门户。

关键动作8
鉴权节点4
表单实验3
JSON 示例2
实验目录

核心实验入口

动作 基础

Hello Action

运行最小 Struts2 动作,观察请求参数如何进入 Action,再由结果页返回浏览器。

登录 Session

登录与仪表盘

这部分是本项目的核心改造点:用经典 Session 登录和拦截器串起后续实验页。

表单 绑定

用户资料提交

演示字段绑定、错误回显和成功汇总页,也是最适合讲参数注入的例子。

校验 输入规则

字段校验实验

对比校验失败和成功页面,理解为什么 Struts2 会在业务逻辑之前先跑 validate。

上传 安全演示

文件上传元数据

保留 multipart 绑定教学价值,但不真正落盘,适合本地和 VPS 环境安全演示。

JSON 接口风格

AJAX 与 REST 风格返回

保留 JSON 动作和 REST 风格示例,用来说明经典 MVC 项目如何逐步演进到接口输出。

可视化学习

Struts2 请求与鉴权流程图

通过时序卡片展示请求到达、拦截、执行和结果之间的关系,并把登录保护链路具体化,增强讲解能力。

请求生命周期

请求进入 → Action → 结果

Struts2 将 URL 映射到 Action,执行之前先跑拦截器,再决定返回的 JSP 或 JSON。

1. 请求进来

Dispatcher 解析 namespace 与 action,构造参数并执行

2. 拦截器链

`AuthInterceptor` 检测 Session,其他拦截器做参数/校验/文件准备

3. 结果输出

Action 返回 SUCCESS/INPUT,Struts 渲染 JSP 或 JSON,浏览器读取响应

Action → Interceptor → Result

链式控制:操作 → 鉴权 → 渲染

每个请求都必须穿过这个三段式,理解它能帮助你解释 Struts2 的核心执行模型。

Action
Interceptor
Result

Action 负责业务,拦截器负责验证/鉴权,Result 负责视图渲染或 JSON 返回。

学习洞察

关键链路 & 实验对照

登录保护链路

Session 登录 + 拦截器

运用 `LoginAction`、`AuthInterceptor` 和 `DashboardAction` 来完成端到端登录和受保护导航。

  • 输入 admin / 123456 写入 Session
  • `AuthInterceptor` 拦截未登录访问
  • 登录后跳转到专属仪表盘再进实验
表单绑定 & 校验

数据绑定观察卡片

从 `userFormPage` 到 `submitUser`,展示字段绑定、校验触发和成功结果的行为差异。

  • 字段名:Action 属性与表单 `name` 一一对应
  • 验证逻辑:`UserAction#submit` 里点亮不同结果
  • 成功后跳转 `user/success.jsp` 显示绑定概览
JSON 对照模块

AJAX vs REST

并列演示 `ajax.action`(AJAX JSON)和 `api/users.action`(REST JSON)的输出差异,便于讲解 Struts 如何扩展接口。

  • `ajax.action` 面向浏览器交互,返回 `success` + data
  • `api/users.action` 保持 REST 语义,便于讲解 JSON 策略