标签include和指令include

本文解析了JSP指令include与Java标签include的区别,详细介绍了它们的定义、语法及执行机制,并探讨了何时选用动态包含更为合适。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指令include和标签include


1. 指令include(静态包含,属于JSP范畴)

定义:静态包含指令是在JSP编译时插入的一个包含文本或代码的文件,这个包含的过程的静态的,而包含的文件可以是JSP文件、HTML文件、文本文件,或是一段java程序(只是简单的将内容合在一起后进行显示)。

语法:<%@include file="要包含的文件路径"%>

其中file属性为必填项 ,路径可以是文件的绝对路径或者相对路径,不支持任何表达式,也不允许通过 ? 来衔接参数。

特点:先包含后执行。

2. 标签include(动态包含,属于JAVA范畴)

定义:动态包含语句可以自动区分被包含的页面是静态还是动态。如果是静态页面,则与静态包含一样,将内容包含进行处理;而如果被包含页面是动态页面,则可以先进行动态处理,然后在将处理后的结果包含进来。

语法:

<jsp:include page="{被包含文件的路径|<%=表达式%>}" flush="true/false">
    <jsp:param name="参数名称" value="参数值"/>
	...可以向被包含页面中传递多个参数
</jsp:inclue>

page属性是必填的(绝对路径或相对路径),但它支持表达式也可传参。flush属性可选值包括true和false两种类型,当其设置为false表示这个页面完全被读进来以后才输出。

特点:如果包含的是动态页面则先执行后包含、静态页面则先包含不执行。

两者的区别

  1. 语法不同:语法范畴不同、写法不同
  2. 执行机制不同:指令include:先包含后执行。标签include:如果包含的是动态页面则先执行后包含、静态页面则先包含不执行。
  3. 一个识别被包含页面的内容,一个不能识别
  4. 标签包含包含动态页面的时候,当前页面可以向被包含页面传参
  5. 指令包含包含的时候不能有,也不能有同名的变量定义,否则会报错

两种包含,使用哪种更好呢?

由于静态包含是简单的将内容copy到包含页面,而如果包含页面和被包含页面出现了相同的变量定义的话,执行会报500错误,提示重复定义变量。而动态包含是分别处理的,先执行再将结果包含到页面,因此有效的避免的错误的产生,而且动态包含还能进行参数的传递,使用会更加方便,所以可以优先考虑使用动态包含。

小记:针对被包含的含有html 和body 而依然能正确执行问题。

创建test.jsp中包含有test2.jsp,运行结果页面中查看页面源代码。

<html>
	<head>
		<title>Insert title here</title>
	</head>
	<body>
	
	
	<html>
		<head>
			<title>Insert title here</title>
		</head>
		<body>
			<h1>hello test2</h1>
		</body>
	</html>
	
	</body>
</html>

可见静态包含将原页面原封不动的包含进入页面,而浏览器却依然能正常执行,这就是浏览器的宽容性,将错误过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值