【问题标题】:Composite web application without frames没有框架的复合 Web 应用程序
【发布时间】:2013-02-07 23:09:27
【问题描述】:

我已经构建了两个 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 中提供的所有页面。

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

【问题讨论】:

  • 您为什么不简单地制作一个集成良好的应用程序?它不会那么混乱。
  • 我希望将 App1 和 App2 作为独立应用程序 - 在某些情况下我想在没有 App2 的情况下部署 App1,在某些情况下我想在没有 App1 的情况下部署 App2。

标签: java web menu frames composite


【解决方案1】:

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

在每个页面中配置一个非常小的 JavaScript 组件,该组件对菜单应用程序进行 AJAX 调用以填充它。通常,这将使用具有特殊类或 ID 的空 <div> 来实现。您还有一个脚本(从 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/

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 2015-06-03
      • 1970-01-01
      • 2011-04-08
      • 2011-08-15
      • 2011-12-03
      • 2011-03-24
      • 2015-07-12
      相关资源
      最近更新 更多