如何在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>
但所有<%
和%>
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 中保留数据存储实体的版本历史记录