我第一次遇到例如Ruby的Sinatra框架或PHP的Zend框架,我想知道Java中是否有足够的东西,这一切看起来都很臃肿。虽然周围有无数的框架,但到目前为止我还没有找到任何框架,我认为这种框架非常适合我想要实现的架构。
我想设计一个对Javascript很重要的Web应用程序,其中大多数应用程序逻辑都在客户端上实现,Java后端或多或少只能用作数据存储或执行复杂的计算。
我确实在这里查看了相关问题,但我找不到完美的答案,每个建议的解决方案都有一个不符合要求的怪癖。
所以这就是我要寻找的,一个具有以下功能的开源框架:
基本上这意味着MVC框架为我做路由并为视图提供模板支持,但其余的是完全模块化的,没有魔力。是否有任何简约框架可以提供这种(或者至少是模块化的,以便以这种方式配置)?
答案 0 :(得分:15)
Play Framework怎么样?
约定优于配置
播放只有很少的配置文件。其大多数结构是按惯例。 例如,基本结构如下:
|
+---/app - All executable artifacts go here (java files, conf files and view templates).
| |
| +---/model - Your model Java classes.
| |
| +---/view - Your view templates.
| |
| +---/controller - Your controller classes
|
|---/conf - Contains all configuration files for the application. Initially contains application configuration and routing table.
|
|---/lib - Libraries your appliaction needs. Added automatically to classpath.
|
|---/log
|
|---/public - Public stuff are your static assets that your server gives directly
|
|---/test
|
|---/tmp - All your temporarily compiled .class files are here
除了web.xml
之外没有XML配置
Play没有XML配置,包括没有web.xml。它有一个路由文件。请参阅下面的示例,它用于路由。
纯Java(没有Scala,没有Groovy,......)
它是纯Java,但您可以通过插件使用Scala或Groovy。
- 自然的REST风格的网址,例如/ news / 2011/7月(没有.do,没有.jsp,...)
- REST感知
来自网站:
Play is a real "Share nothing" system. Ready for REST, it is easily scaled by running multiple instances of the same application on several servers.
事实上,以类似Rest的方式路由非常简单:
# Play 'routes' configuration file…
# Method URL path Controller
GET / Application.index
GET /about Application.about
POST /item Item.addItem
GET /item/{id} Item.getItem
GET /item/{id}.pdf Item.getItemPdf
一旦你习惯了玩游戏,不难猜出哪个会去哪里。
- 它不应该强迫我在应用服务器上部署(例如,EJB应该是可选的)
没有。实际上,您可以通过保存文件进行部署。 EJB是完全可选的,.war
,.ear
和其他形式的部署也是可选的。
像Rails中的代码生成会很棒但不是强制性的
我认为它不会产生太多的代码,但我不是100%的代码。它会自动创建所有必需的文件夹并实例化一个基本的示例页面。我不知道Rails是否会产生其他任何东西......
MVC会很好,但是 - 我希望能够选择M部分,自己选择持久性库(没有捆绑) - 没有自动生成的视图代码,HTML,Javascript和CSS - 一个集成的模板语言会很好,但它应该是简约的(简单的控制流,
)
请参阅MVC in Play
.html
,.css
,.js
和其他文件中使用模板语言来创建动态网页,但它不会生成HTML。我有基于Groovy模板语言的内置模板语言,例如
You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !
其他优点:
缺点:
答案 1 :(得分:3)
Spring Roo:我发现很容易入手。它可以生成UI代码,但由您决定使用它。
答案 2 :(得分:3)
我过去在几个项目中使用了Stripes框架,听起来它符合所有/大部分标准,尤其是约定优于配置。没有XML配置 - 有一个stripes.properties文件具有一般的行为配置(它是类路径的一次性添加)。需要对web.xml进行一次编辑才能配置“Stripes Dispatcher”,它是一个将请求路由到其相应操作bean的Filter。自动发现ActionBeans,因此您在添加更多Action Bean时甚至不必更新web.xml。您的URL都是使用动作bean上的注释,其余支持,动态ActionBean绑定,服务器端验证以及通过简单类型的内置注释进行转换来设置的,并且能够为复杂类型创建自己的验证处理程序和转换器。适用于JSP和您的自定义JS / CSS库。文档和支持论坛非常棒。如果你按照他们的教程学习它会很快。