简析include指令和include动作

前言

在日常开发中,我们项目中的页面都会有一些共同的页面头或者页面脚,这些通过的页面内容,如果每个页面都要自己去写,显然有点多余,(虽然大家都不会去写,直接是ctrl+c,ctrl+v)。但是这样还是觉得很麻烦,如果某个页面头需要修改,那么我们需要修改所有包含这个页面头的页面,这样维护起来就比较麻烦了。那么有没有什么好的办法可以避免这个问题呢?答案肯定是有的,就是通过jsp页面中的include指令和include动作来解决上面的问题。

include指令和include动作的区别

在jsp页面中,我们可以通过两种方式来实现上面的效果,一种是include指令,这是一种静态嵌套,具体使用如下
<%@ include file=”index1.jsp” %>,我们将一些页面都需要的共同内容提取到一个页面中,如果那个页面需要使用那个共同内容,我们就使用inclde指令将这个共同页面嵌套进来。需要注意的一点,采用include指令嵌套,是在主页面编译的时候嵌套进来,我们都知道jsp页面会先编译成servlet,然后在生成class文件,采用include指令嵌套,相当于是将两个页面父子页面编译成一个servlet然后再传到后台。所以在这两个父子页面中不能包含重复变量的定义,否则会报错的。
与include指令不同,我们还可以使用另外一个include动作,具体使用如下,而include动作,可以看作是将两个独立的页面包含在一起然后在页面上显示。注意这里着重强调了是两个独立的页面,也就是说他们会单独编译成两个servlet文件,然后再生成两个class文件。所以这两个独立的页面也就不存在什么变量定义重复问题了,下面是include指令和include动作的简单小例子。
首先是父页面
简析include指令和include动作
用include指令包含的index1.jsp,注意这里不能再在index1.jsp页面中定义path和basepath变量了,否则编译会报错的
简析include指令和include动作
用include动作包含的index2.jsp,这里是可以在index2.jsp中定义定义path和basepath的
简析include指令和include动作
最后的页面显示如下
简析include指令和include动作
为了验证上面的区别,我们可以到tomcat路径下面去看看这两种方式生成的class文件是不是和上面所说的一致
简析include指令和include动作
可以看到,结果是一致的。

总结

上面只是对jsp中的include指令和include动作简单的小总结,他们之间的区别也很简单。有兴趣的小伙伴可以继续深入研究!