JSP中的和<%@include %>

时间:2022-04-21 19:39:56

jsp中include有两种写法, 都是包含一个页面或者一个文件的意思, 写法略有不同

<jsp:include page = "url" />或者<jsp:include page = "url">子动作标识<jsp:param></jsp:include>(什么是子动作标识<jsp:param>)

还有一种是

<%@include file="path" %>

相对来讲, 后者要简单一点, 后者属于一个include指令元素, 并且只有一个file的属性, 只是写上路径就行了, 路径可以是相对路径也可以是绝对路径, 但不能是<%=...%>代表的表达式

而前者是行为元素。

这两者的主要的区别在于

1:指令的包含是先将代码拿过来, 然后与自己的代码一起编译显示, 动作包含的过程是先将代码编译, 然后将编译好的内容放到自己的页面中去

2:动作的包含, page-支持表达式, 指令的包含, file-不支持表达式

3:执行时间上:

<%@ include file="..."%>速度会快一些, 这个是请求一个页面

<jsp:include page="..." />相对来讲会慢, 这个相当于请求两个页面

二:引入内容的不同:

<%@ include file="..."%>

引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.

<jsp:include page="..." flush="true" />引入执行页面或servlet所生成的应答文本.

另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.

<%@ include file="..."%> 为静态的

<jsp:include page="..." flush="true" />为动态的

动态include 它总是会检查所含文件中的变化, 适合用于包含动态页面, 并且可以带参数
静态include用include伪码实现, 不会检查所含文件的变化, 适用于包含静态页面

通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include。