没有框架的复合Web应用程序

时间:2013-02-07 23:09:28

标签: java web menu frames composite

我已经构建了两个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)。

解决方案2:根据网址参数动态构建菜单

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

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

例如,如果父参数不存在,则App1将使用其常规菜单链接到Page1.jsp和Page2.jsp。

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

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

2 个答案:

答案 0 :(得分:1)

如果有第三个Web应用程序负责菜单:

enter image description here

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

一些想法:

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

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

BTW,这类似于FaceBook,Google +,Twitter,Pinterest等实现他们的Like,PlusOne等按钮,同时在第三方Web应用程序中进行微创。例如,请参阅:https://developers.google.com/+/plugins/+1button/

答案 1 :(得分:0)

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

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