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

Stripes 框架入門:約定優於配置,重塑 Java Web 開發體驗

     編輯:Java 程式設計入門

為什麼選擇 Stripes?

傳統 Java Web 框架(Struts 1/2)為解耦引入大量 XML 配置,導致學習曲線陡峭、開發效率低下。Stripes 吸收 Ruby on Rails「約定優於配置」精髓,僅需 web.xml 配置核心 Servlet/Filter,其餘通過註解與命名約定自動完成映射,極大提升產出效率。

核心架構:ActionBean + Resolution

Stripes 典型流程圖
圖 1、典型 Stripes 流程

  • ActionBean:實現 ActionBean 接口的 POJO,自動注入 ActionBeanContext(訪問 Request/Response/Session)
  • 事件方法:簽名為 public Resolution eventName(),@DefaultHandler 標記默認事件
  • Resolution:結果視圖封裝,ForwardResolution(轉發)、RedirectResolution(重定向)、StreamingResolution(流輸出)等

Hello World 實戰

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;
    
    @DefaultHandler
    public Resolution index() { return new ForwardResolution("Hello.jsp"); }
    
    public Resolution hello() { return new ForwardResolution("SayHello.jsp"); }
    // getter/setter + ActionBeanContext 注入
}

驗證註解直接寫在屬性上,on 指定生效事件,錯誤消息自動生成(如 Person First Name is a required field),無需外部配置。

視圖層:JSP + Stripes 標簽庫

<stripes:form beanclass="com.example.HelloWorldAction">
  <stripes:text name="person.firstName"/>
  <stripes:text name="person.age"/>
  <stripes:submit name="hello" value="Say Hello"/>
</stripes:form>
  • beanclass 直接綁定 Action 類,重構時自動同步 URL
  • name 對應屬性路徑,支援巢狀對象、集合、索引屬性
  • submit 的 name 決定觸發哪個事件方法

零配置 URL 映射原理

  1. StripesFilter 啟動掃描 /WEB-INF/classes 下所有 ActionBean 實現類
  2. 類名轉 URL 規則:
    去包前綴 → 去 Action/Bean 後綴 → 點號改斜槓 → 加 .action 後綴
    例:com.myco.web.stripes.action.example.HelloWorldAction → /example/HelloWorld.action
  3. DispatcherServlet 攔截 *.action,查表實例化 Action,解析事件參數執行對應方法

優勢:URL 即類名,無需跳轉配置文件;新增 Action 即自動生效,零維護成本。

AJAX 整合:Prototype.js 範例

JSP 引入 Prototype,按鈕 onclick 調用 Ajax.Updater 異步請求 Action 事件(event=sayHelloAjax),局部刷新 div。Action 新增 sayHelloAjax() 返回片段視圖,極簡實現無刷新交互。

Spring 無縫整合

僅需 Spring 上下文配置,Action 中聲明屬性 + @SpringBean 註解即可自動注入:

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

無額外 XML、無代理工廠,極致簡潔。

進階特性一覽

  • Layout Manager:類似 Tiles 但無需配置文件的佈局復用
  • Interceptor:生命周期攔截(認證、日誌、事務)
  • 文件上傳:內建多部件解析
  • 類型轉換/格式化:可擴展的綁定體系

結語

Stripes 以 Java 5 註解與泛型為槓桿,撬起「簡單而高效」的開發體驗。它證明了 Java Web 框架不必龐大繁雜,約定優於配置、註解驅動驗證、零 XML 映射,讓開發者聚焦業務邏輯。對於尋求輕量、高產、類 Rails 體驗的 Java 團隊,Stripes 是極佳選擇。

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