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

標準 MVC:請求 → StripesFilter 初始化 → DispatcherServlet 分發 → ActionBean 執行事件 → Resolution 轉發/重定向 → JSP/FreeMarker 渲染。
@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 省略
}
ActionBean,自動注入 ActionBeanContext(可訪問 request/session)。@DefaultHandler 標記默認事件(對應無事件參數的 URL)。on)、巢狀屬性、類型轉換+範圍檢查。<%@ 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 顯示驗證錯誤,訊息自動生成(可自定義)。www/web/stripes/action 包段 → 去除 Action/Bean 後綴 → 點替換斜槓 → 加 .action 後綴。com.myco.web.stripes.action.example.HelloWorldAction → /example/HelloWorld.actionForwardResolution("Hello.jsp") 直接指定路徑,無需邏輯視圖名映射。hello= 自動映射到 public Resolution hello()。優勢:改動即時生效、無需專用工具管理配置、Java 與視圖鬆耦合。
前端引入 Prototype.js,按鈕 onclick 呼叫 Ajax.Updater,後端新增事件方法:
public Resolution sayHelloAjax() { return new ForwardResolution("/SayHelloAjax.jsp"); }
片段 JSP 直接輸出 HTML 片段,無需特殊 JSON 序列化(亦可整合 JSON Resolution)。
僅需 Spring 上下文配置,Action 中聲明:
@SpringBean
public void setPersonService(PersonService svc) { this.personService = svc; }
Stripes 啟動時自動掃描並注入,無額外 XML。
@Intercept 實現橫切關注點(日誌、權限、事務)。MultipartRequestWrapper 自動處理。Stripes 以「簡單高效」重新定義 Java Web 開發體驗:註解驅動、零配置、強類型驗證、原生 Spring 整合。對於追求 Rails 風格生產力的 Java 團隊,是極具吸引力的選擇。