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

利用 Stripes、Apache Derby 與 Eclipse 實現零配置 J2EE 開發(二):註解、單元測試與實戰應用

     編輯:Java 相關知識

Stripes 註解機制深度解析

Stripes 框架的核心優勢在於善用 Java 5 註解消除繁瑣的 XML 配置。透過註解,開發者能直接在程式碼中定義 URL 綁定、事件處理、驗證規則等元數據,大幅提升開發效率與可維護性。

派發類註解

  • @UrlBinding:允許 ActionBean 類別自訂 URL 綁定路徑。當請求符合該路徑時,自動路由至對應的 ActionBean。
  • @HandlesEvent:將特定事件名稱映射至 ActionBean 的處理方法。預設情況下 Stripes 會嘗試根據事件名解析方法名,此註解提供顯式控制。
  • @DefaultHandler:定義當請求未指定事件時的預設處理方法。若 ActionBean 僅有一個處理方法,該方法自動成為預設處理器。
  • @SessionScope:將 ActionBean 置於用戶 Session 中,於 Session 生命週期內重複使用,適合保持狀態的場景。
  • @Wizard:標記 ActionBean 為精靈表單的一部分,支援跨多個物理頁面的邏輯表單,提供特殊的狀態管理與驗證機制。

驗證類註解

  • @DontValidate:讓特定事件跳過驗證流程。
  • @Validate:為單一欄位配置客製化驗證規則,支援 required、minlength、maxlength 等參數,亦可組合建立自訂驗證器。
  • @ValidateNestedProperties:啟用巢狀物件的 validate() 方法進行驗證。
  • @ValidationMethod:在事件處理器執行前,先行執行指定的驗證方法。

其他實用註解

@Before、@After、@SpringBean、@Test 等註解進一步擴展了框架的靈活性,支援生命週期攔截、Spring 整合與測試標記。

採用 TestNG 進行單元測試

TestNG 雖非專為 Stripes 設計,但同樣善用 JDK 1.5 註解特性,且配置維護成本較低,成為 Stripes 開發的首選測試框架。其優勢包括:

  • 單一 XML 配置文件管理測試套件元數據
  • 支援多層級測試分組(Suite → Test → Class),提供彈性的執行控制
  • 可透過類 Ant 任務腳本啟動測試
  • 內建主控台、HTML 與客製化報告輸出,並相容 JUnit 報插件

實戰開發:Glossary 1.0 Web 應用程式

本節透過完整的三層式架構範例,示範從資料庫設計到前端呈現的完整開發流程。

應用程式架構設計

Glossary 1.0 採經典 MVC 三層架構:

  • 持久層:資料存取邏輯,封裝 JDBC 操作
  • 業務邏輯層:ActionBean 處理 HTTP 請求、協調資料流向
  • 表示層:JSP 頁面配合 Stripes 標籤庫與 JSTL 呈現資料

核心 Java 類別實作

1. 領域模型:glossary.Term

代表術語實體的 POJO,實作 Comparable 介面以支援按術語名稱排序,包含 id、term、definition 三個核心屬性。

2. 控制器:glossary.action.GlossaryActionBean

實作 ActionBean 介面,透過 @UrlBinding("/glossary/action") 定義自訂 URL 路徑。關鍵處理方法包括:

  • load():@DefaultHandler,載入所有術語並轉發至 /glossary/index.jsp
  • editForm():@HandlesEvent("editForm"),取得單一術語並重導向編輯頁
  • save():@HandlesEvent("save"),更新術語定義並重導向列表頁
  • delete():@HandlesEvent("delete"),刪除術語
  • addForm() / add():新增術語的表單顯示與處理

採用 RedirectResolution 搭配 .flash(this) 實現重導向時的資料傳遞,ForwardResolution 則用於同一 Web 應用內的伺服器端轉發。

3. 資料存取物件:glossary.dao.MyGlossaryTerm

採單例模式管理資料庫連線,封裝完整 CRUD 操作:

  • getConnection():使用 Derby ClientDriver 連線 jdbc:derby://localhost:1527/glossary
  • findAllWords():查詢所有術語,按名稱排序
  • getSingleTerm(id):依 ID 查詢單一術語
  • updateTerm()、deleteTerm()、addTerm():對應修改、刪除、新增 SQL 操作

所有資料庫操作均包含完整的資源關閉與例外處理邏輯,確保連線正確釋放。

前端視圖頁面

根頁面 index.jsp

單純轉發至 /glossary/action/Glossary.action,觸發 ActionBean 的預設處理器。

術語列表頁 /glossary/index.jsp

核心 Stripes 標籤應用:

  • <stripes:form>:自動包含隱藏表單欄位支援驗證錯誤時的頁面回填
  • <stripes:link>:產生指向 ActionBean 事件的連結,支援 event 與 <stripes:link-param> 傞遞參數
  • <c:forEach>:迭代 ${actionBean.results} 顯示術語列表

新增/編輯表單頁

  • termAdd.jsp:使用 <stripes:text>、<stripes:textarea>、<stripes:submit name="add"> 建立新增表單
  • termEdit.jsp:預填既有資料,Submit 按鈕名稱改為 save 觸發對應事件處理器

總結

Stripes 搭配 Apache Derby 與 Eclipse,展示了零配置 J2EE 開發的強大潛力。Java 5 註解消除 XML 配置負擔,Derby 提供輕量級嵌入式資料庫方案,Eclipse WTP 整合 Tomcat 實現熱部署。這套技術棧讓開發者能專注於業務邏輯實作,而非基礎設施配置,極大提升開發效率與專案可維護性。

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