如何在java appengine中将代码与html分开?

Posted

技术标签:

【中文标题】如何在java appengine中将代码与html分开?【英文标题】:how to separate code from html in java appengine? 【发布时间】:2012-04-17 19:22:36 【问题描述】:

我现在正在学习如何用 Java 制作一个 google appengine 应用程序,并且在他们的入门指南中,他们使用 JSP,但这似乎让我回到了我对 MVC 一无所知的过去或关注点分离。

我不想将代码放在模板中,而宁愿使用类似于 django 模板或 jinja 的东西,就像你在 python sdk 中所做的那样。执行此操作的最佳框架是什么?

我正在关注入门指南中的留言簿示例,他们告诉您制作这样的 JSP:

<html>
   <body>

<%
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();
    if (user != null) 
%>
<p>Hello, <%= user.getNickname() %>! (You can
<a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sign out</a>.)</p>
<%
     else 
%>
<p>Hello!
<a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign in</a>
to include your name with greetings you post.</p>
<%
    
%>

  </body>
</html>

但所有&lt;%%&gt;s 都提醒我在HTML 页面中包含php 代码,这不是我想要的方式。有没有办法让我创建一个视图对象,向它传递一些值,然后将这些值插入到模板中?

【问题讨论】:

取决于你用你的jsps做什么。您可以让 JSP 处理 REST 调用并使用 javascript 库根据返回的数据处理视图。 此时,我只是按照留言簿示例,在 HTML 中输出用户名。 有一个django example,但我不确定它是否像您希望的那样复杂。 这并不是 App Engine 所特有的——同样的问题适用于任何 Java servlet 平台。 【参考方案1】:

根据Google App Engine Wiki,支持JSP +JSTL,所以根本不需要Scriptlet。

如果你想要一个干净的 MVC 架构,也许你应该使用支持该模式的框架。 wiki 说它支持 Struts 以及 Spring MVC,因此您可以选择适合您需求的。

【讨论】:

【参考方案2】:

有一些很好的框架可以实现你想要的:

Tapestry Wicket

正如Thomas 所说,我可能会使用像Backbone 和REST 这样的好的js 框架

【讨论】:

【参考方案3】:

grails 可以很好地解决这个问题....但是使用应用引擎框架正确设置所有内容可能会有点痛苦

【讨论】:

【参考方案4】:

我的轻量级模板引擎 Chunk Templates 将在 Google App Engine 中运行。

Chunk 特性包括分支、循环和宏,具有简单的$tag 语法,并且故意不允许像 jsp 那样的内联 java (ick)。类似于 twig/jinja/django/等。

还有很多内置的tag filters,例如:

% $value|sprintf(%.02f) %
% $value|trim %
% $value|onempty("N/A") %

示例/食谱 WAR 在此处部署在 App Engine 中:http://chunk-docs.appspot.com/

【讨论】:

以上是关于如何在java appengine中将代码与html分开?的主要内容,如果未能解决你的问题,请参考以下文章

Appengine 上 google Go 与 Python 和 Java 的资源使用情况

在 1 个请求中将多个文件从 Android 上传到 AppEngine

Java AppEngine:JDO还是JPA,如何选择? [关闭]

如何在 Appengine 中保留数据存储实体的版本历史记录

如何在MATLAB中将原始Unicode十六进制转换为Unicode表示

使用 Google AppEngine 创建 Java Web 服务