00:00
然后下边我们再看,我们还是说哈,这是我们这个动态外部工程,呃,我们可以用一个现象哈,来引出动态外部工程和它编译结果,这个目录结构的这个差异在这儿呢,我们来写一个GSP index.gsp然后呢,我在web content下边哈,我建一个目录叫good.jp叫good good下边呢,我们有一个再建一个JP叫target.jp。我要干什么事呢?我在这儿哈,我点超链接,这个超链接呢叫to target,我呀先用这样的路径来写。这个肯定是能够这个访问的了的,然后从target我再回来,回来这个我说。
01:12
那么它回去呢,得是点点,当然我们说这是相对路径了,加点这个index.gp。这个也能回来,然后呢,如果说我中间哈,我给他让这个来插一杠子,我中间来做一个转发的操作,BY转发dispat。我们去找一个啊,这个是target。
02:05
然后我们在这个do get里边,Request get request。哎,然后这儿呢,是去的是good下边的这个target展P,因为外边插毛改了,所以说我们在这呢,用一个接重启一下。这个时候呢,其实你去呢,是一样是可以去的,但是他还能不能够回来呢?404了,就问题就出在这儿是吧,你要是看这个路径呢,你会觉得他这没错呀是吧,你看这个路径呢,你会觉得他没错,为什么他就这个就回不来了啊,因为你这个啊,你转发的时候。
03:07
你去的这个目录呢,是这个target so是吧,然后呢,你回头呢,你再去写这个,呃,你再回来的时候呢,你这个点点斜杠呢,它其实是以这个soull,它是以这个为基准的,他要再往上一层,它就是啊,或者说它现在是跟这个是同级的,他在这个chicken的这个下边,它要再往上一层呢,就相当于到8080的这个下边了,那到8080下边再去找他呢,这个就找不到了。哎,这就是我们说哈,这就是为什么我们说一定要使用这个绝对路径,不能够使用这个相对路径,嗯,那在这儿呢,我们说哈,嗯,我们这个目录跟目录结构有关系的是什么呢?就是在这儿哈,我们通过so去转发到这个页面的时候呢,我们这个路径哈,是应该是这么写的,呃,你这路径这么写呢,我们说这个转发的时候,这个路径呢,是我们这个服务器解析的,服务器解析的时候呢,这个斜杠代表外部应用的这个根目录。
04:22
他应该呢,嗯,它是代表我们这个是他应该代表的是这个chicken,可是呢,你这个chicken这一集啊,你要是你要是从这儿看的话,呃,它和这个good之间呢,它是有一个web content的,有一个web content的,但是呢,你这个下边呢,你这个斜杠下边直接找的是这个good,你并没有去找这个web content,并没有去找它,但是呢,他还反问着了。是吧,你看这个路径就是这个它呢就相当于是这个外这个这个chicken,哎,然后呢,你这个他下边没有去找这个web content,直接去找这个good,诶再去找他,诶他这个居然对了,你要真的把这个web content加上会怎么样,但反而还找不着了,诶那么这个是为什么呢?这个就是我们说的这个编译结果哈,和这个我们工程本身这个目录结构呢,它是不一样的,我们不妨呢来看一看啊,这个编译的这个结果,编译结果它的这个目录结构,这两个呢,我们去对比一下,嗯。
05:36
我们这样来对比一下啊嗯。这是我们工程的目录结构。然后我们怎么去找那个编译的结果呢?那个编译的结果哈,是在这个服务器上面的啊,它在这个服务器上,在这个服务器上我们去找这个编译结果,就得找这个它部署的目录,呃。
06:17
在这儿我们是其实有这么一个插件哈,这个功能是一个插件。这个东西好像大家没有是吧,没有是吧,我们先体会一下它的神奇哈,一点它它就能够到这儿,这个目录下面有没有来过,哎,来过是吧,你要手动的去找这个,那就这个这个目录还挺深的,还挺不好找的啊,但是我们这个直接要是有这个插件呢,这个就很容易过来,这个插件呢,也很容易就能够装上。这个就是eclipse你的解压的目录,这个在招SE这个目录下边有一个TC server,把这个目录呢,把这个目录哈,你里边也不用改,就把这个目录也放在你的这个招聘目录下边就有这个了,嗯,我给大家就省得一会儿忘了哈,我给重我给我给群发一下,你上下飞休哈。
07:27
我在笔记里边给大家写上啊,这个也是顺带一题的事儿,哎,就是这个整个目录复制到eclipse,它的这个解压安装目录下的Japanese。目录下即可。它起什么作用呢?它的作用就是在tomcat镜像上点右键的时候有这个browser deployment location。
08:10
开心帮他们照相呢,你不着急哈,你可以回头再弄,行,这笔记里边都写上了啊,回头你看着笔记都能都能弄,然后咱们下边就是接着说我们把这个目录哈,这里边儿这个目录我们为了方便来看看看。
09:02
诶,这CTRLC我们给他拿到我们这个,拿到这个里边,我们另外随便建一个工程啊,就是为了看这个目录结构,跟这工程没有关系。那么这个时候,其实这里边儿有些我看有些还不太需要。哎,咱们就这样看啊,我们来对比一下这两个目录结构,进行一下这个对比,那其实咱们先不用看这个细节,我们就这个初步这么粗粗的一看的话,就就很明显这个左边这个都左边比右边这个内容还是要多很多的啊,右边的话这个比它这个这个内容要少,那咱们一块一块的来对比一下,就是这个build的下边哈,这个class这一部分。
10:29
诶,这一部分它在我们这个编译结果里边呢,就是我们这个外部info里边的这个class,哎,所以说他把这个class呢,是直接的给这个拿过来了。这是编译结果,这是其实真正的是编译结果啊,这是Java源程序的编译结果,然后当然了,这个变异结果哪来的呢?是这个src的下边。源码目录的下边这些,它经过编译变成了这个点class解码文件。
11:07
然后呢,这个src这个目录呢,经过这个编译以后,它就不会到我们编译结果里边了,你看这里边。你看这里边它并没有那个src相关的啊,运行的时候不需要源码,运行的时候是不需要源码的,那么在这呢,我们说哈,我们通常呢,说这个class这个目录,我们管它叫做这个类路径,其实指的是它这是真正的这个类路径。然后有的时候呢,我们不不是特别严格哈,我们管这个src呢,也叫这个类路径,但是严格呃,也不能说是错的,因为src里边你放的东西最终呢,都会到这个真正的这个类类路径下边啊,所以说它这个呢,也可以开发的时候我们也可以这么说啊,开发的时候也可以这么说,就它最终会变成这个类类路径,然后呢,再看哈,大家有没有发现它这个web content里边的这一堆。
12:08
哎,是不是就是怎么说呢,就是咱们这儿的,你要我们给它括起来吧。其实就是后边这个整体这一大堆。哎,Web content里边呢,就生成的是这一对。诶,你看我们可以看一看这个就是这个good这个目录和里边这个GSP是它,然后这是mata infer里边这个啊,这个咱们一般不会去去修改它web infer的力B和web插毛web infer的这个lib和web插毛in小洁癖,所以说这个编译的这个结果啊,我们说这边哈,它是编译的结果,它的主体的内容呢,就是我们we部content里边这些。这是编译的结果。
13:02
而我们这边呢,它就是那个原来的我们这个外部工程。那么大家看我左边这个是,呃,哎,这是我工程的样子,右边是我编译的结果,哎,这个对应关系呢,咱们现在进行这个目录上的对应关系,我们就知道了,然后呢,我们说哈,这个时候呢,你看web content的这个目录本身呢,在这边哈,并没有这个目录本身啊,并没有目录本身这个编译结果的,这个目录的这个名字呢,叫这个chicken,这是不是就是咱们这工程的名字呀。哎。名字呢,用的是工程的名字,里边的内容呢,是web content里边的这个内容,他们就是这么一个对应关系,所以说这时候这时候我们再看这个路径,它这是外围用的根目录,实际上呢,它指的是指的是这个,它指的是这个,它是chicken,它指的是这个,然后呢,你再从按照编译结果这个目录结构来看,我在chicken下边再去找这个good,再去找它,这个就顺理成章了,从这看我们就知道其实并没有web content跟它呢其实没有关系,真正运行的是这个编译的结果。
14:24
啊,所以说这就是我们写路径的时候呢,写路径的时候你不能够以这个工程的目录结构为标准啊,你得以这个编译的结果呢为标准,可是你当然你写的时候呢,你不可能每不可能每次都来看一看这个编译结果,你心里边知道它怎么个对应的关系就好了,啊,你心里面知道它怎么个对应关系就好了,Web content里边的内容变成了编译结果的主体的目录结构,然后这个目录整体是这个工程的这个名字啊,这个名字是一致的,然后呢,把这个class自解码文件放在了web infer的这个class这个目录下边,真正要运行的是它。
15:11
诶,在这我们说这个是这样一个结论哈,我们这个项目最终最终运行的并不是外部工程本身,而是这个动态外部工程,它的编译的这个结果,那么嗯,这个在开发过程中,诶,嗯。所有的这个路径或这个变,呃,或者是我们这个配置文件中。编写,或者说这个叫配置的呃类。嗯,类路径等啊,这个都是以我们这个编译结果的目录结构为呃标准的啊,我们要看的是这个目录编译结果以它的目录结果为准的,而你这个工程呢,只是一个开发的环境,这工程呢,它只是一个开发的环境啊,真正运行的并不是它,就像这只鸡啊,你真正你你你处理的是这只生的鸡啊,但是真正你吃的是这只熟的鸡,诶这个工程就相当于是生的鸡,你得经过编译和部署啊,才能够变成编译结果,这只鸡才能吃,当然了,在这儿我们再说一下啊,什么叫部鼠啊。
16:42
一会儿我们再说构建过程的时候说这个事儿吧。
我来说两句