MVC在Google App Engine Java世界中的应用

我是从C#和ASP.NET MVC来到Java,我很想找到一个可以在Google App Engine上使用的Java世界中的等价物。 我已经开始玩FreeMarker ,甚至迈出了编写一个非常简单的框架的第一步。 理想情况下,我不需要做所有艰苦的工作,有人必须已经做到了! 所以我的问题是 – 那些来自ASP.NET MVC的我会熟悉哪些框架,我可以在Google App Engine for Java上使用它们。

我想要的关键是:

  • 简单路由/products/view/1映射到产品控制器的视图操作,产品为1
  • 模板引擎 – 某种方式可以轻松地将“ViewData”传递给视图,并且从视图中轻松访问它,理想情况下我希望避免任何过于XMLy的事情(因此我喜欢FreeMarker )。

我目前正在使用Spring MVC开发Google App Engine应用程序。 它比ASP.NET MVC更成熟,所以你不应该失望。 作为额外的奖励,你拥有Spring的整个IoC能力。

对于视图层,我正在尝试Velocity。 这很简单,但我还没有决定是否比JSP更喜欢它。 我简单地看了一下FreeMaker,但不喜欢我所看到的。 如果你想远离XML’y JSP模板而不是我建议你给Velocity一个旋转。

我在GAE上使用Spring的唯一问题是文件上传。 MultipartResolver实现都依赖于临时文件目录。 在编写了我自己的实现后,我又回到模型中无缝上传文件。

你应该考虑几个MVC框架(这就是我现在正在做的)。 最初,我选择了Spring MVC(3.0),GAE的冷启动是可怕的! 它需要大约10秒钟才能启动(我甚至不使用任何复杂的东西,比如弹簧安全等),所以我需要使用一个cron作业来保持它的存活。 所以我不建议你在GAE上使用Spring。

看看以下框架:

VRaptor

Slim3

Google Sitebricks

至于模板,我使用Sitemesh – 现在使用它已经有一段时间了,所以不要看到需要切换。

希望这可以帮助!

Play Framework符合要求。 它是适用于Java的现代MVC框架,并具有Google App Engine模块以提供兼容性。 见http://www.playframework.org/modules/gae 。

使用Play的另一个好处是可移植性。 您可以使用其内置的Web服务器部署Play(可选地在apache之后进行缓存,负载平衡等),也可以捆绑为.war文件以部署到许多Java应用程序服务器(Glassfish,Tomcat,…)。

我也非常喜欢Freemarker。 我建议您查看一下Induction框架,它的模板引擎是可插拔的,但默认支持是Freemarker。 归纳是一个轻量级和快速的MVC框架(7.7K行),但在主要的MVC框架中没有许多function,例如:

  • 更改控制器,视图或模型时,在开发期间动态重新加载
  • 文件上传如此简单(与字符串输入差别不大)
  • 控制器无需配置
  • 使用IDE分析模型,视图和控制器之间的依赖关系的function
  • 基于正则表达式的URL映射
  • 管理任何MVC框架重定向的最佳支持

至于@pjesi引发的文件上传问题,Induction允许您设置文件写入磁盘的大小阈值。 如果设置得足够大,则不应尝试将任何文件写入磁盘。

查看入门教程: http : //www.inductionframework.org/getting-started-tutorial.html

JavaServer Faces(JSF)我听说过类似于微软的MVC框架。 (我使用JSF但从未使用过.NET MVC)。 我相信JSF 1.1在Google App Engine上运行良好,我怀疑如果你坚持使用XHTML而不是JSP作为模板,那么新版本的JSF将会起作用。 还有一些很好的库可以让你在JSF框架上使用AJAX接口,RichFaces是一个很受欢迎的库。 查看sun.com上的JavaServer Faces以及JBoss RichFaces