簡體   English   中英

使用Guice-servlet / Jetty / Jersey的輕量級Java Web堆棧 - 一些問題

[英]Light Java web stack using Guice-servlet/Jetty/Jersey - some questions

我正在考慮使用“輕量級”組件而不是完整的堆棧框架來開發新的Web應用程序。

這篇文章是我的主要靈感!

Jetty :Web服務器。 我可能會使用embedabble版本進行開發,但可以選擇將應用程序導出為.war並使用外部Jetty服務器進行生產環境。

Guice / Guice-Servlet :用於依賴注入和servlet映射+過濾器。

Jersey :用於路由+請求/響應json(de)序列化時的需要。

一個重要的注意事項:我知道有些人會將這種堆棧與Jersey一起用作Web服務層 ,並將使用Javascript框架(Backbone,AngularJS等)來使用這些服務並執行大部分表示邏輯在Javascript中。 我還沒有為這種客戶端做好准備。 我仍然喜歡使用JSP,並且能夠將純HTML發送到禁用了javascript的客戶端。

所以,我的問題:

  • 使用Jersey管理表單的最佳方法是什么? 使用Spring MVC(我在其他項目中使用),有一個“支持對象”的概念,其中提交的POST數據自動綁定到一個易於使用的支持對象。 澤西有類似的東西嗎?

  • 我喜歡在一個特定的路由文件中定義所有路由,而不是像@Path注釋那樣在我看來更難管理。 我很確定Jersey要求使用那些硬編碼的JAX-RS的@Path注釋並且不允許外部路由配置系統,這是正確的嗎? 您是否認為我可以用澤西島集中所有路線?

  • 我喜歡反向路由的概念(例如Play框架提供)。 而且,我認為澤西島不能提供這種功能,這是正確的嗎?

  • 考慮到我以前的問題,也許Jersey不適合使用? 你知道我可以用於堆棧中的路由部分的其他庫嗎?

  • 有關這種輕量級Java Web堆棧的任何其他建議/提示嗎?

更新:

我目前正在尋找UrlRewriteFilter作為路由部分。

我也在看ActiveWeb框架 ,它是一個“完整堆棧”框架,但看起來很輕,似乎也提供了一些我正在尋找的功能:集中式路由配置和反向路由。

解釋一些術語。 Guice和Spring解決相同的問題域,即依賴注入。 因此,同時使用Guice和SpringMVC在某種程度上是不可能的,或者至少是相反的。

為了區分Guice和Spring,說得好:

陡! 更接近血腥不可能。 我認為Guice就像是把一個女孩帶回家過夜。 春天是一定婚姻,如果不小心,痛苦離婚。 - 蜘蛛2011年10月7日16:25

Guice確實是非常輕量級的DI框架。 但是不支持路由和模板。 你必須自己通過綁定servlet並使用你自己的tempaltes引擎來完成它。 或者您可以使用Sitebricks 您可以將所有路由放入SitebrickModule配置方法,如下所示:

public class MyAppConfig extends SitebricksModule {
@Override
protected void configureSitebricks() {
    at("/movies").show(MoviesPage.class); // basic page
    at("/actors").serve(ActorsPage.class); // service
    embed(SoundtrackPage.class).as("Soundtrack"); // brick
}

}

Sitebricks還支持幾種模板系統:MVEL,Freemarker,......

此外,您可以輕松地為javascript用法構建REST服務:

Reply<Product> view() {
  return Reply.with(new Product("Anti-ageing cure"))
              .as(Json.class);
}

試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM