<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello 示例 - Struts2</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 900px; margin: 50px auto; padding: 20px; background:#f7f8fa; }
        .card { background:#fff; border-radius:14px; padding:24px; box-shadow:0 4px 14px rgba(0,0,0,.06); margin-bottom:20px; }
        h1 { color:#e74c3c; }
        .msg { font-size:1.3em; color:#2c3e50; margin-top:10px; }
        code { background:#f0f0f0; padding:2px 6px; border-radius:4px; }
        .lab { background:#fff7e6; border-left:4px solid #fa8c16; padding:15px; border-radius:8px; }
        a { color:#3498db; }
    </style>
</head>
<body>
    <div class="card">
        <h1>👋 Hello 示例</h1>
        <p class="msg">${message}</p>
        <p>这是 Struts2 最基础的一条链路：浏览器请求 <code>/hello</code> → Struts2 匹配 Action → Action 返回结果名 → JSP 被渲染。</p>
    </div>

    <div class="lab">
        <strong>学习观察点</strong>
        <ul>
            <li>访问 URL：<code>/hello</code></li>
            <li>对应配置：<code>struts.xml</code> 里的 <code>&lt;action name="hello" ...&gt;</code></li>
            <li>对应控制器：<code>HelloAction.execute()</code></li>
            <li>视图页面：当前这个 <code>hello.jsp</code></li>
        </ul>
    </div>

    <div class="card">
        <h3>🔍 为什么这个例子重要</h3>
        <p>很多人一开始学 Struts2，会直接被拦截器、标签库、OGNL、配置文件吓到。Hello 示例的价值在于：先把“请求如何进来、结果如何出去”这条最小主线跑通，再去理解更复杂的机制。</p>
    </div>

    <p><a href="learn">← 返回学习中心</a></p>
</body>
</html>
