diff --git a/web/WEB-INF/classes/struts.xml b/web/WEB-INF/classes/struts.xml index ed7416f..ededc9b 100644 --- a/web/WEB-INF/classes/struts.xml +++ b/web/WEB-INF/classes/struts.xml @@ -23,6 +23,7 @@ + /WEB-INF/views/index.jsp @@ -31,6 +32,7 @@ + /hello.jsp @@ -76,6 +78,7 @@ + @@ -87,7 +90,15 @@ + + + + + + + + diff --git a/web/WEB-INF/views/index.jsp b/web/WEB-INF/views/index.jsp index 4e4c517..0bf4849 100644 --- a/web/WEB-INF/views/index.jsp +++ b/web/WEB-INF/views/index.jsp @@ -5,264 +5,118 @@ - Struts2 学习实验台 + Struts2 学习门户
-
-
-
-
Struts2 学习实验台
-

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

-

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

-
- +
+
Struts2 学习门户
+

登录之后才能继续学习

+

所有课程模块(首页/实验/JSON 等)都由 AuthInterceptor 保护,未登录访问会自动跳转。请先登录再回来。

+
登录后才能看到完整课程导航与实验入口。
+ -
-
关键动作8
-
鉴权节点4
-
表单实验3
-
JSON 示例2
+
+ + 当前:) + + + 当前尚未登录,请先完成登录再浏览实验。 +
-
- - -
-
-
实验目录
-

核心实验入口

-
-
-
- 动作 - 基础 -
-

Hello Action

-

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

- -
- -
-
- 登录 - Session -
-

登录与仪表盘

-

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

- -
- -
-
- 表单 - 绑定 -
-

用户资料提交

-

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

- -
- -
-
- 校验 - 输入规则 -
-

字段校验实验

-

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

- -
- -
-
- 上传 - 安全演示 -
-

文件上传元数据

-

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

- -
- -
-
- JSON - 接口风格 -
-

AJAX 与 REST 风格返回

-

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

- -
+ +
+

AJAX / REST 对照

+

对比 `ajax.action` 与 `api/users.action` 的 JSON 输出。

+ - -
+ +
+
-
-
可视化学习
-

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 策略
  • -
-
-
-
- -
+
+
Insight
+

安全学习链路速览

+
+
+

登录才能使用

+

未登录访问 `dashboard.action` 等任何端点都会被 AuthInterceptor 重定向至 `loginPage.action`。

+
+
+

表单绑定观察

+

`UserAction` 按字段绑定,`ValidationAction` 造成的字段错误会带回当前 JSP。

+
+
+

AJAX vs REST

+

`ajax.action` 返回对话式 JSON,`api/users.action` 呈现 REST 样式,便于教学对照。

+
+
+
- +