JSP包括,导入代码之前和之后

时间:2015-07-13 10:39:53

标签: java html jsp import include

我的网络应用中的许多页面都有以下结构。我想在页面代码之前和之后创建一个带有固定代码的模板页面,然后为每个不同的页面放置我的代码。问题是我应该在不同的文件中剪切div

<!-- fixed jsp code 
  <header>
  <imports> ...
  <div id="some-fixes-divs-inside">
-->

   page code

<!-- fixed jsp code
  </div>
  <other>
  <footer>
 -->

我知道的唯一方法就是这样,但我认为切割div不是一个好习惯:

<jsp:include page="fixed-jsp-code-head.jsp" />
    my page code
<jsp:include page="fixed-jsp-code-footer.jsp" />
  

Q1:jsp或任何其他框架中是否有任何指令或内容可以做到这一点?

     

Q2:如果第一个Q不是,我的解决方案是不好的做法吗?

编辑:我想知道是否有任何类似<import>mycode</import>的指令在模板中包含所有代码页脚和标题,并且不要打开相同的div 1}}在标题中并在页脚中关闭它,并将我的代码放在模板中。

2 个答案:

答案 0 :(得分:2)

您也可以使用Apache Tiles。它是一个模板组合框架。像this一样。

首先,定义一个模板:

<definition name="myapp.homepage" template="/layouts/classic.jsp">
  <put-attribute name="header" value="/tiles/banner.jsp" />
  <put-attribute name="menu" value="/tiles/common_menu.jsp" />
  <put-attribute name="body" value="/tiles/home_body.jsp" />
  <put-attribute name="footer" value="/tiles/credits.jsp" />
</definition>

然后在你的代码中使用它:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<table>
  <tr>
    <td colspan="2">
      <tiles:insertAttribute name="header" />
    </td>
  </tr>
  <tr>
    <td>
      <tiles:insertAttribute name="menu" />
    </td>
    <td>
      <tiles:insertAttribute name="body" />
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <tiles:insertAttribute name="footer" />
    </td>
  </tr>
</table>

答案 1 :(得分:1)

  

如果第一个Q不是,我的解决方案是不好的做法吗?

在我看来,根据各自的功能分离jsps是一种很好的做法。这使得您的代码松散耦合。将来,如果你必须更改页眉/页脚代码,你只需要在一个地方更改它,减少大量的返工。

  

Q1:jsp或任何其他框架中是否有任何指令或内容   这样做?

在另一个jsp中包含jsp的标准方法是使用

<%@include file="your jsp"/>(静态包含)或

<jsp:include page="fixed-jsp-code-footer.jsp" />(动态包含)

您还可以使用JSTL标记

`<c:import url=”http://www.example.com/foo/bar.html” />` (dynamic include)

它很有用,但它更强大和灵活:与其他两个包含不同,url可以来自web容器外部!