首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBuilder 2005 Struts 實戰:用 ActionForm 與 Action 重構登錄模塊,告別 switch.jsp

     編輯:Java 相關知識

本文演示如何在 JBuilder 2005 中將原始登錄模塊(User Bean + switch.jsp)重構為標準 Struts 架構:UserActionForm 封裝表單數據並支援 reset(),LoginAction 承擔業務驗證與多出口轉發,login.jsp 直接提交至 Action,實現清晰分層。

一、創建 UserActionForm:替換 User Bean

ActionForm 比普通 Bean 強大:支援 validate() 自動校驗、reset() 重置屬性、自動填充請求參數。

向導步驟

  1. File → New → Web → ActionForm,類名 UserActionForm,配置文件 struts-config.xml
  2. 添加 4 屬性:userId、password、userName、loginDatetime
  3. 勾選 Create/replace reset() method body(因放入 session 需重置),無需 validate()

圖 6 創建 UserActionForm

圖 7 定義 ActionForm 屬性

圖 8 附加功能定義

最終代碼

public class UserActionForm extends ActionForm {
    private String userId, password, userName, loginDatetime;
    // getter/setter 省略
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        this.userId = this.userName = this.password = this.loginDatetime = null;
    }
}

JBuilder 自動在 struts-config.xml 生成 <form-bean> 配置。

二、創建 LoginAction:替換 switch.jsp 控制邏輯

向導創建 LoginAction,基類選 org.apache.struts.action.Action(標準 Action):

圖 9 指定 Web 模塊及 Action 名字

配置關鍵項

  • Action path:/loginAction(訪問 URL 為 /webModule/loginAction.do)
  • FormBean name:userActionForm(自動填充並傳給 execute)
  • Scope:request(驗證通過後手動綁定 session,觸發 valueBound() 記錄日志)
  • Input JSP:留空(無 validate())

圖 10 設置 LoginAction 配置信息

完成後 Struts Config Editor 可視化展示流程:

圖 11 Struts Config Editor 登錄流程

三、調整 login.jsp:表單提交指向 Action

<form name="form1" method="post" action="/webModule/loginAction.do">
  用戶名:<select name="userId">...</select>
  密碼:<input name="password" type="password">
  <input type="submit" value="登錄">
</form>

關鍵點:

  • action 改為 /webModule/loginAction.do(部署路徑 + Action path + .do 後綴)
  • 若用 <html:form> 標籤則無需手寫部署路徑,框架自動解析
  • Struts 總控制器通過 *.do 路徑匹配攔截請求,務必加 .do 後綴

四、LoginAction.execute() 實現邏輯

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
    UserActionForm uaf = (UserActionForm) form;
    // 1. 業務驗證:查詢數據庫、比對密碼
    // 2. 失敗 → return mapping.findForward("fail")  // 需在配置文件定義 forward
    // 3. 成功 → 手動綁定 session:request.getSession().setAttribute("user", uaf);
    //              return mapping.findForward("welcome");
}

後續可在 Struts Config Editor 為 /loginAction 添加 fail、welcome、error 三個前向,分別指向 fail.jsp、welcome.jsp、error.jsp。

五、重構效果對比

指標switch.jsp 時代Struts 重構後
分層視圖+業務混雜ActionForm(Action) + Action(Controller) + JSP(View)
數據封裝<jsp:useBean> 手動框架自動填充 ActionForm
頁面跳轉硬編碼 <jsp:forward>ActionForward 邏輯名稱 + 配置文件
可測試性極難單元測試Action 可獨立測試
擴展性修改 JSP 影響業務新增 Action/Forward 僅改配置

此重構確立了標準 Struts 開發模式,為後續模塊開發奠定基礎。

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