我正在考虑使用“轻量级”组件而不是完整的堆栈框架来开发新的Web应用程序。
This article是我的主要灵感来源!
Jetty :网络服务器。我可能会使用embedabble版本进行开发,但可以选择将应用程序导出为.war并使用外部Jetty服务器进行生产环境。
Guice / Guice-Servlet :用于依赖注入和servlet映射+过滤器。
泽西:对于需要时路由+请求/响应json(de)序列化。
一个重要的注意事项:我知道有些人会将这种堆栈与Jersey一起用作 Web服务层,并将使用Javascript框架(Backbone,AngularJS等)来使用这些服务并在Javascript中执行大部分表示逻辑。我还没有为这种客户端做好准备。我仍然倾向于使用JSP,并且能够将纯HTML发送给禁用了javascript的客户端。
所以,我的问题:
使用Jersey管理表单的最佳方法是什么?使用Spring MVC(我在其他项目中使用),有一个“支持对象”的概念,其中提交的POST数据自动绑定到一个易于使用的支持对象。是否有与泽西相似的东西?
我喜欢在一个特定的路由文件中定义所有路由,而不是像@Path注释那样在我看来更难管理。我很确定Jersey要求使用那些硬编码的JAX-RS的@Path注释并且不允许外部路由配置系统,这是正确的吗?您是否认为我可以用泽西岛集中所有路线?
我喜欢反向路由的概念(例如Play框架提供)。而且,我认为泽西岛不能提供这种功能,这是正确的吗?
考虑到我以前的问题,也许Jersey不适合使用?你知道我可以用于堆栈中的路由部分的其他库吗?
此类轻量级Java网络堆栈的其他任何建议/提示?
更新:
我目前正在查看UrlRewriteFilter的路由部分。
我也在关注ActiveWeb framework,它是一个“完整堆栈”框架,但看起来很轻,似乎也提供了一些我正在寻找的功能:集中路由配置和反向路由。 / p>
答案 0 :(得分:0)
解释一些条款。 Guice和Spring解决相同的问题域,即依赖注入。因此,同时使用Guice和SpringMVC在某种程度上是不可能的,或者至少是相反的。
对Guice和Spring的区别,说得好:
Guice确实是非常轻量级的DI框架。但是不支持路由和模板。你必须自己通过绑定servlet并使用你自己的tempaltes引擎来完成它。或者您可以使用Sitebricks。您可以将所有路由放入SitebrickModule配置方法,如下所示:陡!更接近血腥不可能。我认为Guice就像拿一个 女孩回家过夜。春天是一定的婚姻,如果没有 小心,痛苦的离婚。 - 蜘蛛2011年10月7日16:25
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);
}
试一试。