00:00
好,下边呢,我们再来看include指令。我们直接写个程序啊。咱们来吧,新建一个。那个叫零二。Include。嗯。来一个JSP。index.jsp。嗯,我这写这样一个啊index。
01:06
然后这个呢,我们就保留配金钩挺就可以了。好,现在。现在要干嘛呢?Include指令,看这个怎么用。这个配置指令啊,现在指令配置指令你写哪都行。只不过我们一般会写到第一行。Include指令呢,咱们这样看,Index page,这个叫before。这是after,这中间我加上一个。Include。它里边有一个属性,只有一个。
02:02
就是你要包含谁呀。包含谁呢?我们在这儿再定一个。接着。这个JSP,比如说我们叫。嗯,叫什么nest.jsp。好,我这就写next page。看好了。这样写谁杠n.JSP因为这是JSP文件里边的。什么动态部分啊,所以这个路径是。后台路径,这要加斜杠啊,加上斜杠是后台路径,也就是说它的参照路径是当前web项目的。跟。跟下边有没有next JP啊,有有所以就加上斜杠啊好了,就是现在我们跑一下。
03:17
看到没?看到这儿了吧,他是不是在这中间呢,Before和after中间呢,也就是说这个include咱们可以在这样。换一下。我刷新页面。你看是不位置换了,你也得写哪儿,他会把这个被包含的文件给他放哪。诶,这是两个JSP啊,Index JSP和JSP好,现在我们再找到。这俩JSP文件我们是不是。
04:00
他们看里边那个JSP翻译引擎会把它们翻译成。点我们找到这个文件啊。三门儿考。碳。Walk。这个吧。看好。哎。不对呀。怎么只有index翻译的?这个点Java没有nice翻译的呀,对不对。大家看一下。打开看看。诶,我发现个问题啊。我发现个问题,这样我刷新一下再刷新,这不回来了吗?
05:00
看看看。看什么?战士们比。这是不是after?这中间夹着一堆,这是什么东西,看看。还有IL head。N配哦,我明白了什么意思呢,它这个index,它这个include是把谁是不是把这个文件拷贝了一份。给他放到这儿了呀。对不对,拷贝了一份,然后给它放到这儿,放到这儿以后再。进行翻译,通过JSP翻译引擎把它再翻译成。点Java。也就是说是在翻译之前。进行的这个。
06:02
最后会把它里边的代码和它里边的代码合并到一个点Java里边,并且是合并到一个点Java的是不是那个。Surface方法里边啊。对不对。那么这种包含include有一个名称。叫做。静态联编。他叫静态联编。就是把被包含的,被包含的,或者说这个包含这个动作是发生在什么时候,发生在。编译之前,其实确切的说是发生在我们tomcat服务器的。是不是JSP翻译翻译之前呢。啊,不能说翻译之前,翻译的时候会自动就把它给包含进来了,对不对,在翻译的时候就给它包含进来,不能说翻译之前啊,翻译的过程里边,确切的说是编译之前,这就叫静态连编。
07:15
诶,我我我这儿有个想法啊,什么想法呢。如果说我在这儿大家看。我。来一个。这个叫。Username,我这来一个username,这定义个变量对吧,我们大家知道你定义的这个变量将来会被JSP翻译引擎翻译到哪啊,是不是service里边啊。让我在这儿。我在这儿看好。
08:00
能不能?输出这个na。能不能把这个username给它输出来。但我们得想一下。这个是定一个局部变量在哪,是不是在那个啊。它呢,是不是也在里边,所以是不是应该可以啊。对不对,我们试一下。现在试一下啊。大家试一下,我们直接刷新就行了,走。呀,没问题,是不是还真是没问题。也就是说我们静态联编。这两个文件。之间对于变量。需要注意什么?它是共享的。
09:01
怎么说就共享了,你在这儿。声明的变量我在这儿。可以用。当然了,那你如果说我在这儿声明个变量。包含之前我生命变量,比如说我这儿。Address。这是北京。大兴。一桩大族起来是吧,比如就这个我在包含之前。我声明一个变量,那我在这个里边能不能给他输出呢。把它包含进来的时候,我给他先输出了行不行呢,我给这加out.print。
10:08
Address。行不行呢?哟,这看着好像不行啊。是不是?好像看的。报错呀,不是按理说不应该呀,你看看。我在这儿声明的,然后再包含,包含的时候是。这输出啊。看一下。看一下,有同学说这肯定是不对的,你看啥看,那已经报错了,刷新。行不行,可以那可以,这儿为什么不做呀。那是因为这是eclipse他给你进行的语法检查,他认为,哎,你看看啊,这个文件里边你就没定义变量address,你给他输出address。
11:01
可是他不知道。人家服务器会做工作,什么工作呀,把这个东西会包含到这儿,在这儿定义了。那为什么这儿没报啊?你看。多了个东西。这个是这是你检查的语法它。认为什么这个。单独他单独看这个文件的呀,单独看这个文,这个里边又没有include,所以你这定义这个address,他就认为你根本就没定义,而这之所以不报错,是因为这儿有个include,他认为你既然这样写,肯定是这里边。
12:08
包含在这里边定义的有。所以这个暴力的错,我们不用管它。这是什么?这是eclipse给我们。进行的这种语法检查,他认为是错的啊,OK了OK了。那也就是说,对于这种静态联编,我们需要注意什么问题?第一。这两个文件之间可以共享同一个变量。这是好的,你想共享的话,这是好的,那不好的什么这两个文件,如果说你不想共享面料。那么你就得注意这俩文件里边能不能取得。定义的变量名取的名字相同。你看这。
13:01
你看这里边啊,顺,这是不是。北。在这儿是不是输出的,再看它这是不是定义的,Address这边是不是输出的,那如果说我这个里边。定一个address,我这个里边也定一个address。卒。哎呀。民族是吧,啊怎么写的啊,这个这字。Yeah。怎么搞的?
14:04
真的吧,大猪。企。来。好,你看你这样定义,这样现在语法不报错了。可是你想一下,将来翻译以后。被GDP翻译引擎翻译以后,他会不会报错?看好啊,我现在刷新。你看这儿错了吧,为什么?那明显我们就知道。你他这就翻译的时候就错了啊,所以他这边就没更新了。那么。你看。你这定一个address,这也定一个address,这俩名称一模一样。
15:04
在一个方法里边定义俩同名的局部变量,这肯定是不允许的呀。对不对,所以啊,这是静态联编。需要注意的问题,可以共享。相同的变量如果不共享,这俩文件之间不能起同名的。这个变量变量名不能定义同名的变量。那么这个现在也知道了啊,知道这个include指令了,也知道这个静态联编了,那为什么要用。Include指令呢,为什么要用它,其实啊。用它。比如说咱们大家上网的时候啊,呃,咱们这样。
16:02
那么。打开一个。淘宝。我们打开淘宝啊。嗯,他这个还还不是很一样啊。这个不是很一样。我想给大家说什么呢,就是我这儿也不找那个网站了啊,就是这样的,就我们打开好多网站啊。一般。特别是什么那种企业的门户网站。那种企业的门户网站,你打开它以后。嗯,这里边儿会有一个什么问题呢。就是这个头和左侧。导航。是不变的,意是中间是不是在变。
17:01
中间一直在变,那么这个就说明一个什么问题。这个。关了它了,这个是说什么呢。就是。哎,对,这个其实和我们大家学IL时候那个frame。那框架是一个意思,就是上面这一部分不动,这样也不动。然后意志改变的是哪?这中间的内容在动。那怎么样实现这种效果?当然使用frame这种框架是可以的,另外我们使用include包含指令也行。这样的话有个好处啊。我以后再写所有的页面的时候,我都用这个include包含。专门写一个头,专门写一个左侧。
18:00
我每一次用的时候都把它们包含到这个页面里边。实际上这头部就一个页面,这个也是一个页面,它在好多页面里边都是通过include给它包含进去的。这种效果可以使用。这种。这个这个静态连边,或者说include指令给它实现,所以啊。为什么使用?然后,对于一个包含很多页面的系统或者站点,很多页面的头部、底部或者左侧部分是相同的。为了减少页面定义的重复性工作,为了便于这些相同部分的修改,我们将这些相同的部分分别定义为多个页面,然后让其他需要使用这些部分的页面。使用in include指令将它们包含进来,这样的话大大减少了工作量,还做到了对页面修改的一改全改效果。
19:02
这是为什么使用include指令?
我来说两句