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

Stripes 框架:約定優於配置的 Java Web 開發

     編輯:Java 相關知識

前言

Stripes 是一個輕量級、基於 Action 的 Java Web 框架,核心理念是「約定優於配置」,大量借鑒 Ruby on Rails 簡潔風格,消除龐大的 XML 配置,讓開發者專注於業務邏輯。本文介紹其核心機制、編程模型、驗證、Ajax、Spring 整合等關鍵特性。

核心架構流程

Stripes 典型流程

標準 MVC:請求 → StripesFilter 初始化 → DispatcherServlet 分發 → ActionBean 執行事件 → Resolution 轉發/重定向 → JSP/FreeMarker 渲染。

編寫第一個 ActionBean

@UrlBinding("/example/HelloWorld.action")
public class HelloWorldAction implements ActionBean {
    @ValidateNestedProperties({
        @Validate(field="firstName", required=true, on="hello"),
        @Validate(field="age", required=true, minvalue=13, on="hello")
    })
    private Person person;

    private ActionBeanContext context;

    @DefaultHandler
    public Resolution index() { return new ForwardResolution("/Hello.jsp"); }

    public Resolution hello() { return new ForwardResolution("/SayHello.jsp"); }

    // getter/setter 省略
}
  • POJO 實現 ActionBean,自動注入 ActionBeanContext(可訪問 request/session)。
  • @DefaultHandler 標記默認事件(對應無事件參數的 URL)。
  • 驗證註解緊貼字段,支援分組(on)、巢狀屬性、類型轉換+範圍檢查。

視圖層:JSP + Stripes 標籤庫

<%@ taglib prefix="stripes" uri="https://stripes.sourceforge.net/stripes.tld" %>
<stripes:form beanclass="com.example.HelloWorldAction">
  First name: <stripes:text name="person.firstName"/><br/>
  Age: <stripes:text name="person.age"/><br/>
  <stripes:submit name="hello" value="Say Hello"/>
</stripes:form>
<stripes:errors/>
  • beanclass 綁定 Action 類,重構時自動同步 URL。
  • name 對應屬性路徑,自動雙向綁定。
  • stripes:errors 顯示驗證錯誤,訊息自動生成(可自定義)。

約定優於配置:零 XML 映射

  1. URL 綁定規則:類全名 → 移除 www/web/stripes/action 包段 → 去除 Action/Bean 後綴 → 點替換斜槓 → 加 .action 後綴。
    例:com.myco.web.stripes.action.example.HelloWorldAction → /example/HelloWorld.action
  2. 視圖解析:ForwardResolution("Hello.jsp") 直接指定路徑,無需邏輯視圖名映射。
  3. 事件映射:請求參數 hello= 自動映射到 public Resolution hello()。

優勢:改動即時生效、無需專用工具管理配置、Java 與視圖鬆耦合。

Ajax 支援

前端引入 Prototype.js,按鈕 onclick 呼叫 Ajax.Updater,後端新增事件方法:

public Resolution sayHelloAjax() { return new ForwardResolution("/SayHelloAjax.jsp"); }

片段 JSP 直接輸出 HTML 片段,無需特殊 JSON 序列化(亦可整合 JSON Resolution)。

Spring 整合

僅需 Spring 上下文配置,Action 中聲明:

@SpringBean
public void setPersonService(PersonService svc) { this.personService = svc; }

Stripes 啟動時自動掃描並注入,無額外 XML。

其他亮點

  • Layout 管理器:類似 Tiles,但無需外部定義文件。
  • 攔截器:@Intercept 實現橫切關注點(日誌、權限、事務)。
  • 檔案上傳:MultipartRequestWrapper 自動處理。
  • 類型轉換器:可擴展自定義格式化/解析邏輯。

結語

Stripes 以「簡單高效」重新定義 Java Web 開發體驗:註解驅動、零配置、強類型驗證、原生 Spring 整合。對於追求 Rails 風格生產力的 Java 團隊,是極具吸引力的選擇。

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