【精品】JSP页面引入技术

采用页面引入技术可以将多个页面相同的部分抽取出来,从而使用代码满足DRY()原则。

1、jstl import

 <c:import url="inlayingJsp.jsp"></c:import> 

JSP页面引入包含静态引入和动态引入两种:

2、静态引入

静态引入:将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来。复制被包含文件汇总的所有内容,再把它粘贴到这个文件中。
静态引入的语法:

<%@ include file="relativeURLSpec"%>

示例:

  1. 被引入的页面:aa.jsp

    <%@ page contentType="text/html; charset=utf-8" language="java"%>
    <html>
    	<head>
    		<title>被引入的页面</title>
    	</head>
    	<body>
    		<h2>被引入的页面</h2>
    	</body>
    </html>
    
  2. 目标页面:aim.jsp

    <%@ page contentType="text/html; charset=utf-8" language="java"%>
    <html>
    	<head>
    		<title>静态引入范例</title>
    	</head>
    	<body>
    		<%@include file="aa.jsp"%>    <%--指定引入页面--%>
    	</body>
    </html>
    
  3. 运行,查看生成的servlet类可看到如下代码段
    在这里插入图片描述
    可看出静态引入时被引入页面的内容会被直接写入到目标页面中。
    注意:静态引入会将被包含页面的编译指令也包含进来,如果两个页面的编译指令有冲突,那么目标页面就会出错。

3、动态引入

动态引入是不会引入include页面的编译指令的,而是仅仅将被引入页面的body内容插入本页面。
动态引入的语法格式:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/><jsp:include page="{relativeURL|<%=expression%>}" flush="true">
	<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>

flush属性用语指定输出缓存是否转移到被引入文件中。如果指定为true,则包含在被引入文件中,如果指定为false,则包含在原文件中,对于JSP1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被引入页面中加入额外的请求参数。

示例:

  1. 被引入的页面:aa.jsp

    <%@ page contentType="text/html; charset=utf-8" language="java"%>
    <html>
    	<head>
    		<title>被引入的页面</title>
    	</head>
    	<body>
    		<h2>被引入的页面</h2>
    	</body>
    </html>
    
  2. 目标页面:aim.jsp

    <%@ page contentType="text/html; charset=utf-8" language="java"%>
    <html>
    <head>
        <title>静态引入范例</title>
    </head>
    <body>
    <jsp:include page="common.jsp"/>
    </body>
    </html>
    
  3. 运行,查看生成的servlet类可看到如下代码段
    在这里插入图片描述
    可看出动态引入只是使用了一个include方法来插入目标页面的内容,而不是将目标页面完全融入到本页面中。

4、静态引入和动态引入有如下三点区别:

  1. 静态引入是将被引入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态引入则在Servlet中使用include方法来引入被引入页面的内容。
  2. 静态引入时被引入页面的编译指令会起作用;而动态引入时被引入页面的编译指令则失去作用,只是插入被引入页面的body内容。
  3. 动态引入可以增加额外的参数,而静态引入只生成一个java文件
  4. 静态引入是指令标签,动态引入是行为标签
  5. 静态引入被引入的页面发生改变时,所有引用它的页面都得重新编译;而动态引入被引入的页面发生改变时,只需要编译被引入的页面即可
  6. 静态引入可以引入静态页面,动态引入可以引入动态页面
  7. 动态引入:如果包含jsp文件,每次加载目标页面的时候,被包含的页面都要重新编译。就是说不管包含了几个jsp页面编译后生成的servlet只有一个class文件
  8. 静态引入:包含了几个JSP文件转译成servlet时就会有几 个 class文件,如果在jsp1定义了变量i同时在jsp2也定义了变量i那么你编译都会通不过的
  9. 静态引入是在转换时插入被引入文件的源代码,而动态引入是在运行时插入被包含文件的响应。
  10. 静态包含,不论包含的是txt文本还是jsp文件,被包含的页面都不会从新编译。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁云亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值