Struts2 中 Action 是核心接口,ActionSupport 是其默認實現類,預置了驗證、國際化、序列化等常用功能,開發強烈建議繼承 ActionSupport。
| 維度 | Action 接口 | ActionSupport 類 |
|---|---|---|
| 定義 | 接口,僅聲明 execute() | 實現類,繼承 Action 並實現多個輔助接口 |
| 實現方式 | implements Action | extends ActionSupport |
| 內置結果常量 | SUCCESS, NONE, ERROR, INPUT, LOGIN | 繼承自 Action,同樣可用 |
| 驗證支援 | 無 | 實現 Validateable,提供 validate() 方法,失敗自動轉 INPUT |
| 國際化支援 | 無 | 實現 TextProvider,提供 getText(key) 讀取資源文件 |
| 類型轉換/序列化 | 無 | 實現 Serializable、TypeConversion 等 |
| 代碼量 | 需手動實現一切 | 開箱即用,專注業務邏輯 |
Action:核心契約Validateable:驗證框架調用 validate()ValidationAware:字段/Action 級錯誤消息收集TextProvider:getText(key) 國際化LocaleProvider:區域信息Serializable:分布式/集群會話複製public class UserAction extends ActionSupport {
private String username, password;
// getter/setter
public void validate() {
if (username == null || username.trim().isEmpty())
addFieldError("username", "用戶名不能為空");
if (password == null || password.length() < 6)
addFieldError("password", "密碼長度至少 6 位");
}
public String execute() {
// 業務邏輯
return SUCCESS;
}
}
若驗證失敗,框架自動返回 INPUT 結果,需在 struts.xml 配置 <result name="input">/login.jsp</result>。
implements Action,但生產環境不推薦。繼承 ActionSupport 是 Struts2 開發的「標準姿勢」,讓框架處理基礎設施,開發者聚焦業務。