静态包含和动态包含——View的复用方式

    前几篇博客介绍的,都是MVC架构中,Servlet、Listern、*.java的抽象、解耦、复用,那V的JSP如何处理抽象和解耦?

包含

    JSP虽然不能像M和C使用抽象、继承,但是它有自己的方式:包含。通过包含,可以讲JSP抽象出几个独立的部分,然后再组合起来,根据展示的不同,组合的方式也不同,从而达到各个部分之间的解耦和复用。包含又分为静态包含和动态包含。

    静态包含

    静态包含使用的标签是:

<%@ include file="" %>

    静态包含的意思是在编译前,将页面中使用到的JSP等合并为一个,然后再编译,因为编译前合并为了一个,所以各个部件之间不能有相同的变量名。

    动态包含

    动态包含使用的标签是:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><jsp:include page=""></span>

    动态包含是在运行期间执行包含的文件,即各个部件之间分别编译,形成多个文件,因为分别编译,它们有各自的DOM结构,当然各个部件之间的变量名可以相同。

包含测试

    JSP

    主体内容content.jsp

<table border="1">
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
</table>

    头部内容header.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<h1>Header Info</</h1>

    尾部内容footer.jsp

<hr>
Copyright©1989-2013
</body>
</html>

    静态包含

    index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ include file="/header.jsp" %>
<%@ include file="/content.jsp" %>
<%@ include file="/footer.jsp" %>
    编译出的类文件

    
    合并的HTML页

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<h1>Header Info</</h1>
<table border="1">
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
</table>


<hr>
Copyright©1989-2013
</body>
</html>

    动态包含

    index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ include file="/header.jsp" %>
<jsp:include page="/content.jsp"></jsp:include>
<jsp:include page="/footer.jsp"></jsp:include>

    编译出的类文件


    生成的HTML页

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<h1>Header Info</</h1>
<table border="1">
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
	<tr>
		<td>col1</td>
		<td>col2</td>
	</tr>
</table>


<hr>
Copyright©1989-2013
</body>
</html>
    可以看出二者生成的HTML页是相同的,那么什么时候用动态包含?什么时候用静态包含?我的理解是:当部件之间联系较大,比如要使用相同的DOM结构、数据需要引用时,使用动态包含;当部件之间关系不大,比如是一些HTML静态内容时,动态包含和静态包含都可以。

静态包含使用

    我们拿常用的EL和JSTL为例,结合上面所说,它相当于无需编译的内容,我们使用静态包含。将jstl声明写成一个单独的jsp文件,然后引用,<%@ include file="/common.jsp" %>。

    common.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

    这样就可以达到common.jsp的复用。


    更多博客,其访问《项目总结》。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值