Struts 2 是基於 MVC 模式的 Web 框架,核心組件包括 Action(業務處理)、Interceptor(攔截器,處理橫切關注點)與 Result(結果視圖)。框架透過「包」來管理這些組件,每個包可包含多個 Action、攔截器與攔截器引用。
在 struts.xml 中,<package> 元素定義一個模組化配置單元,常用屬性如下:
struts-default 以獲得預設攔截器堆疊與結果類型。/manage。package org.example.struts2.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String username;
private String password;
private String message;
// Getter/Setter 略
public String login() {
if ("admin".equals(username) && "123456".equals(password)) {
message = "登入成功,歡迎 " + username;
ActionContext ctx = ActionContext.getContext();
if (ctx.getSession().get("user") != null) {
message = username + ":您已經登入過了!";
} else {
ctx.getSession().put("user", username);
}
return SUCCESS;
} else {
message = "登入失敗,帳號或密碼錯誤";
return ERROR;
}
}
public String register() {
// 這裡可整合 Service 層寫入資料庫
message = "註冊成功";
return SUCCESS;
}
}
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"https://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="userModule" extends="struts-default" namespace="/manage">
<action name="userOpt" class="org.example.struts2.action.UserAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
index.jsp(登入)
<form action="manage/userOpt!login.action" method="post">
<table>
<tr><td>帳號:</td><td><input type="text" name="username"/></td></tr>
<tr><td>密碼:</td><td><input type="password" name="password"/></td></tr>
<tr><td colspan="2"><input type="submit" value="登入"/></td></tr>
</table>
</form>
register.jsp(註冊)
<form action="manage/userOpt!register.action" method="post">
<table>
<tr><td>帳號:</td><td><input type="text" name="username"/></td></tr>
<tr><td>密碼:</td><td><input type="password" name="password"/></td></tr>
<tr><td colspan="2"><input type="submit" value="註冊"/></td></tr>
</table>
</form>
範例中使用 userOpt!login.action 與 userOpt!register.action,這是 Struts 2 的 動態方法調用 特性,允許單一 Action 類別處理多個業務邏輯,對應不同的方法名稱。
Struts 2 透過模組化的包配置、靈活的攔截器機制與約定優於配置的設計,簡化了 Web 應用開發。掌握 struts.xml 的結構與 Action 的編寫,是上手此框架的關鍵。