首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 前台傳遞物件至後台的最佳實踐

     編輯:程式設計綜合問答

情境說明

開發者習慣在前台頁面傳遞單一 ID,再由後台查詢資料庫取得完整物件,導致程式碼冗餘且效能不佳。期望能直接將前台物件(如表單資料)傳遞至後台 Action。

可行方案比較

方案一:URL 參數拼接(不推薦)

<a href="action.do?id=123&name=abc&age=20">提交</a>
  • 優點:簡單直觀。
  • 缺點:GET 請求長度限制(約 2KB),中文需編碼,資料暴露於 URL,不安全,併發量大時效能差。

方案二:表單提交(推薦)

使用 <form> 以 POST 方式送出,Struts2 會自動將表單欄位對應至 Action 的屬性(或 ModelDriven 物件)。

<form action="saveUser" method="post">
    <input type="hidden" name="user.id" value="123"/>
    <input type="text" name="user.name" value="張三"/>
    <input type="text" name="user.age" value="25"/>
    <button type="submit">儲存</button>
</form>

Action 類別:

public class UserAction extends ActionSupport implements ModelDriven<User> {
    private User user = new User();
    @Override public User getModel() { return user; }
    public String save() {
        userService.save(user);
        return SUCCESS;
    }
}

方案三:AJAX 非同步提交(現代應用首選)

前端以 JSON 格式送出,後端以 @RequestBody 或 Struts2 JSON Plugin 接收。

// JavaScript (jQuery)
$.ajax({
    url: 'saveUser',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({id:123, name:'張三', age:25}),
    success: function(resp) { console.log('成功'); }
});

核心原則

  1. 避免在 URL 傳遞大量資料,改用 POST Body。
  2. 善用 Struts2 類型轉換,自動將表單資料封裝為物件。
  3. 敏感資料勿放入 URL,防止日誌洩漏。

結語

雖然「傳 ID 再查 DB」在某些情境下(如資料極大、需權限檢查)仍有其必要性,但對於一般表單提交,直接傳遞物件屬性能大幅簡化代碼並提升可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved