下面我会详细讲解一下“JSP页面的动态包含和静态包含示例及介绍”的攻略。
什么是JSP页面的包含?
JSP页可以通过 <%@ include file="filename.jsp" %>
的方式,包含其他文件或JSP页面。这个操作叫做实现JSP页面的包含。根据包含JSP页面和被包含JSP页面的关系,包含又可以分为静态包含和动态包含。
静态包含
所谓静态包含,是指在编译JSP页面时,被包含页面就已经确定,这种包含方式是在编译阶段就已经处理完成。这种方式相当于把被包含的JSP页面内容放到主JSP页面中。
JSP页面中的静态引入采用的是指令 <%@ include file="文件名" %>
。其中,file 必须是一个常量,这就意味着文件名必须在编译时期可以确定,也就是说,它只能包
含指定文件的内容。如果 file 属性所指的文件不存在,则会在 JSP 编译时抛出异常。
示例1:编写一个被引入的公共页面common.jsp。代码如下:
<nav>
<ul>
<li><a href="index.jsp">总览</a></li>
<li><a href="about.jsp">关于我们</a></li>
<li><a href="news.jsp">新闻中心</a></li>
</ul>
</nav>
接下来,在需要引用该公共页面的页面中使用 include 指令,示例如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<!-- 这里引入了common.jsp的内容 -->
<%@ include file="common.jsp" %>
<h1>这里是首页内容</h1>
</body>
</html>
在浏览器中查看该页面,可以发现被引入的内容已经成功显示出来。
示例2:在静态包含中,被包含的页面的内容会被直接嵌入到主页面中,所以,如果主页面和被包含页面都有相同的 Java 代码,那么在合并时就会产生重复的代码,这样做无疑会浪费很多空间,降低服务器的性能。为了解决这个问题,可以使用动态包含。
动态包含
所谓动态包含,是指在运行JSP页面时,被包含页面是可以动态改变的。被包含的JSP页面的动态性由Java代码保证,因此被包含页面的内容可以是不同的。
动态包含采用的是
示例1:编写两个需要被引入的页面,例如 common1.jsp 和 common2.jsp,代码分别如下:
<!-- common1.jsp的内容 -->
<nav>
<ul>
<li><a href="index.jsp">总览</a></li>
<li><a href="about.jsp">关于我们</a></li>
</ul>
</nav>
<!-- common2.jsp的内容 -->
<nav>
<ul>
<li><a href="index.jsp">总览</a></li>
<li><a href="news.jsp">新闻中心</a></li>
</ul>
</nav>
接下来,在需要引用公用页面的页面中,使用 jsp:include 标签的 page 属性动态获取被包含页面的名称,示例如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<!-- 这里引入了要被包含的页面,具体引入哪个页面可以根据条件不定 -->
<c:choose>
<c:when test="${condition1}">
<jsp:include page="common1.jsp"/>
</c:when>
<c:when test="${condition2}">
<jsp:include page="common2.jsp"/>
</c:when>
<c:otherwise>
<jsp:include page="common1.jsp"/>
</c:otherwise>
</c:choose>
<h1>这里是首页内容</h1>
</body>
</html>
在上面的代码中,当需要引入 common1.jsp 页面时,被包含的页面名称就传递为 common1.jsp;当需要引入 common2.jsp 页面时,被包含的页面名称就传递为 common2.jsp;当既不需要引入 common1.jsp 也不需要引入 common2.jsp 页面时,就引入默认的 common1.jsp 页面。
示例2:动态包含是在运行时动态合成的,其结果会被缓存起来供后续使用,因此,在一些需要频繁视图更新的场合,缓存这个特点显得尤为重要,比如,列表页中显示的页码列表。因为页码列表的内容是由分页查询语句和分页参数共同组成的,这些参数经常变化,因此,分页参数值不同的情况下,可以考虑使用动态包含的方式来更新页码列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP页面的动态包含和静态包含示例及介绍 - Python技术站