2

我已经构建了两个 Web 应用程序,我们将它们称为 App1 和 App2。

App1 有多个页面(Page1.jsp 和 Page2.jsp)。App1 是一个独立的应用程序,它有一个链接到两个页面的菜单。

App2 有多个页面(Page3.jsp 和 Page4.jsp)。App2 也是一个独立的应用程序,它有一个链接到两个页面的菜单。

现在我想把App1和App2组合成一个超级应用程序,而不需要修改App1或App2。这个超级应用程序应该有一个链接到 App1/Page1.jsp、App1/Page2.jsp、App2/Page3.jsp 和 App2/Page4.jsp 的菜单。

我想到了几种方法来做到这一点:

解决方案 1:框架

我可以创建一个菜单框架,它有一个链接到 App1 和 App2 页面的菜单。

我可以有一个单独的框架,用于显示 App1 和 App2 的内容。

但是,我并不热衷于使用框架(http://www.html-faq.com/htmlframes/?framesareevil)。

方案二:根据 URL 参数动态构建菜单

超级应用程序可以有一个基于 div 的菜单链接到 App1 和 App2。它可以在 URL 上传递一个参数,例如 App1/Page1.jsp?parent=SuperApp。

App1 和 App2 可以根据 parent 参数动态构建菜单。

例如,如果 parent 参数不存在,那么 App1 将使用其链接到 Page1.jsp 和 Page2.jsp 的正常菜单。

但是,如果 parent 参数存在,那么 App1 将使用 SuperApp 菜单 (SuperApp/header.html) - 它会在 JSP 页面中动态包含此 HTML。此 SuperApp 菜单将链接到 App1 和 App2 中提供的所有页面。

第二个解决方案将在不使用框架的情况下工作,但我想探索是否还有其他我没有考虑过的解决方案?

4

2 回答 2

2

让第三个 Web 应用程序负责菜单怎么样:

在此处输入图像描述

在每个页面中配置一个非常小的 JavaScript 组件,该组件对菜单应用程序进行 AJAX 调用以填充它。通常,这将使用<div>具有特殊类或 ID 的空来实现。您还有一个脚本(从 MenuApp 下载)可以定位<div>并添加菜单。

一些想法:

  • 最简单的实现是 MenuApp 使用 servlet config 来配置菜单选项。更灵活的方法可以使用 SQL 或 NoSQL DB
  • 参数化调用,调用页面可以使用菜单上下文(例如 LoggedIn、AdvancedUser、Configuration)进行调用,并且 MenuApp 返回适当的菜单项子集
  • 更高级:用户可以配置自己的收藏夹

这样做的主要缺点是额外的回调,尽管如果您已经在使用 AJAX,这可能是一个非常低的开销。

顺便说一句,这类似于 FaceBook、Google+、Twitter、Pinterest 等实现其 Like、PlusOne 等按钮的方式,同时对第三方 Web 应用程序的侵入性最低。例如参见:https ://developers.google.com/+/plugins/+1button/

于 2013-02-18T07:04:25.083 回答
0

当您想同时使用两个应用程序时,一种可能的解决方案是使用 portlet。部署将相同,您无需在 App1 和 App2 中进行任何更改。根据您想要使用的 portlet 容器,配置会有所不同,但最终您将为每个应用程序拥有一个 portlet,并配置该门户的菜单以定位每个应用程序的 url。

两种可能的解决方案是LiferayJetspeed。我和那两个人一起工作。还有 JBoss GateIn portlet 容器。

于 2013-02-24T21:32:45.563 回答