8

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

Java - 模型/控制器

PHP - 视图

我们正在努力构建 Glassfish 和 Apache 之间交互的原型。我们仍在处理的一件事是,当用户访问http://domain.com/login.html并登录时,该登录名将被发送到 Glassfish 控制器,该控制器存在于/login.java. 我们可以做到这一点没问题,问题是让视图在该 URL 处呈现。

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

4

3 回答 3

6

您是否考虑过在 Java 中设置一个肥皂/休息服务器并让 PHP 与之对话?我想这会比你想要实现的要简单得多。

于 2012-08-24T19:51:10.730 回答
2

我很抱歉提出这个问题,但似乎只使用其中一种语言会使事情变得更简单。如果您使用 PHP 在视图中添加更多逻辑,则可能值得一看Velocity。它允许您访问和创建变量、遍历列表、使用条件、定义宏、进行方法调用等。这似乎可以让事情变得更简洁。但是,尝试在模板中保留尽可能多的逻辑通常是一个好主意。

If you would like to use PHP because that is what is required I would suggest taking a look at using web services to communicate. Take a look at Googles GSON library. It is really nice tool (on the java side) for mapping JSON Objects to your model (and vice versa).

On your front-end, it might also be worth taking a look at Backbone. It is a tool that makes it simple to mock up your model Objects and bind events to them, or add tie them directly to fields, etc.

于 2012-08-24T19:53:16.033 回答
1

我在两家使用 Java服务层和 PHP客户端层技术堆栈的公司有过第一手经验,尽管它不是专门使用的。为了清楚地分离这些层,构建了一个定义良好的 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,以便从持久性存储中返回用户特定的数据。

于 2012-08-24T20:02:07.890 回答