JSP include, import code after and before
JSP include, import code after and before
我的网络应用程序中的许多页面都具有以下结构。我想用页面代码前后的固定代码创建一个模板页面,然后为每个不同的页面放置我的代码。问题是我应该在不同的文件中剪切 div
s。
<!-- fixed jsp code
<header>
<imports> ...
<div id="some-fixes-divs-inside">
-->
page code
<!-- fixed jsp code
</div>
<other>
<footer>
-->
我知道的唯一方法就是这样,但我认为削减 div
s 不是一个好习惯:
<jsp:include page="fixed-jsp-code-head.jsp" />
my page code
<jsp:include page="fixed-jsp-code-footer.jsp" />
Q1: Are there any directive or something in jsp or any other framework to do that?
Q2: If first Q is no, is my solution a bad practice?
编辑: 我想知道是否有像 <import>mycode</import>
这样的指令在模板中包含所有代码页脚和页眉并且不要打开在页眉中使用相同的 div
并在页脚中将其关闭,然后将我的代码放入模板中。
If first Q is no, is my solution a bad practice?
在我看来,根据各自的功能将 jsp 分开是一个很好的做法。这使您的代码松散耦合。以后如果要改header/footer代码,只需要改一处,减少很多返工。
Q1: Are there any directive or something in jsp or any other framework
to do that?
在另一个 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 可以来自网络容器之外!
您也可以使用 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>
我的网络应用程序中的许多页面都具有以下结构。我想用页面代码前后的固定代码创建一个模板页面,然后为每个不同的页面放置我的代码。问题是我应该在不同的文件中剪切 div
s。
<!-- fixed jsp code
<header>
<imports> ...
<div id="some-fixes-divs-inside">
-->
page code
<!-- fixed jsp code
</div>
<other>
<footer>
-->
我知道的唯一方法就是这样,但我认为削减 div
s 不是一个好习惯:
<jsp:include page="fixed-jsp-code-head.jsp" />
my page code
<jsp:include page="fixed-jsp-code-footer.jsp" />
Q1: Are there any directive or something in jsp or any other framework to do that?
Q2: If first Q is no, is my solution a bad practice?
编辑: 我想知道是否有像 <import>mycode</import>
这样的指令在模板中包含所有代码页脚和页眉并且不要打开在页眉中使用相同的 div
并在页脚中将其关闭,然后将我的代码放入模板中。
If first Q is no, is my solution a bad practice?
在我看来,根据各自的功能将 jsp 分开是一个很好的做法。这使您的代码松散耦合。以后如果要改header/footer代码,只需要改一处,减少很多返工。
Q1: Are there any directive or something in jsp or any other framework to do that?
在另一个 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 可以来自网络容器之外!
您也可以使用 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>