初學 Struts2 框架時,JSP 頁面提交表單後瀏覽器直接報 404 錯誤,Tomcat 控制台無異常信息。經排查,核心原因是 JSP 表單 action 路徑與 struts.xml 中 Action 配置的 name 屬性不一致。
<form action="Can/user_save" method="post">
<!-- 表單字段 -->
</form>
<action name="C_method" class="com.example.UserAction" method="save">
<result name="success">/success.jsp</result>
</action>
<!-- JSP -->
<form action="userSave" method="post">
<!-- struts.xml -->
<action name="userSave" class="com.example.UserAction" method="save">
<result name="success">/success.jsp</result>
</action>
<package name="user" namespace="/user" extends="struts-default">
<action name="save" class="com.example.UserAction" method="save">
<result name="success">/success.jsp</result>
</action>
</package>
<!-- JSP -->
<form action="user/save" method="post">
HTTP Request
↓
StrutsPrepareAndExecuteFilter
↓
ActionMapping (根據 URL 匹配 Action name)
↓
ActionProxy → ActionInvocation
↓
Interceptor 堆棧執行 (params, validation, workflow...)
↓
Action 實例方法調用 (execute() 或指定 method)
↓
Result 處理 (JSP, FreeMarker, JSON, Redirect...)
↓
HTTP Response
Struts2 基於約定優於配置,但核心映射關係必須精確對應。初學階段建議採用簡單扁平化命名,避免過早使用複雜命名空間導致調試困難。