使用Java作为后端,使用PHP作为前端


Using Java as a backend and PHP as a front end

已经有一些关于SO的帖子讨论了这个体系结构是好主意还是坏主意。由于我们公司内部的许多原因,包括现有的编程人才,我们决定使用Java作为后端,使用PHP作为前端。我们的目标是。。。

Java-型号/控制器

PHP-视图

我们正在构建Glassfish和Apache之间交互的原型。我们仍在研究的一件事是,当用户访问http://domain.com/login.html并且他们登录,该登录将被发送到Glassfish控制器,该控制器存在于类似/login.java的地方。我们可以做到这一点,没有问题,问题是让视图在那个URL上呈现。

有人用PHP或任何其他技术做到这一点吗?

您有没有考虑过用java建立一个soap/rest服务器,并让PHP与之对话?我想这会比你想要实现的要简单得多。

很抱歉提起这个问题,但似乎只使用其中一种语言会让事情变得简单得多。如果您正在使用PHP向视图中添加更多的逻辑,那么不妨看看Velocity。它允许您访问和创建变量、遍历列表、使用条件、定义宏、进行方法调用等。这似乎可以让事情变得更干净。然而,通常最好尽量在模板中保留尽可能多的逻辑。

如果你想使用PHP,因为这是必需的,我建议你考虑一下使用web服务进行通信。看看谷歌的GSON库。它是一个非常好的工具(在java方面),用于将JSON对象映射到您的模型(反之亦然)。

在您的前端,也可能值得一看Backbone。它是一个工具,可以简化建模对象并将事件绑定到它们,或者将它们直接添加到字段等。

我在两家使用JavaService层和PHPClient技术堆栈的公司有过第一手经验,尽管它不是专门使用的。为了清楚地分离层,构建了一个定义良好的JSON REST API,这样每个层都有一个可以编码的合同

Java层在持久层之间使用SpringMVC生成具有定义良好的路由(即URL结构)的JSON视图,以便PHP层访问GET/PUT/POST/DELETE资源。

关于登录问题,实际上有两个Java服务,一个专门用于登录/注销,另一个用于常规后端。

当访问/login时,我认为它将是一个.php文件。向"登录"服务提交登录<form>导致添加了会话cookie,但也添加了加密的"用户ID"cookie。然后可以使用加密的cookie来保护对产品的Java服务层的访问。从PHP到Java的每个REST请求都可以访问cookie,然后Java层可以解密"用户ID",并在其有效的情况下响应PHP REST调用。Java层可以访问真实的用户ID,以便从持久存储返回用户特定的数据。