00:00
前面我们编写了商品上架功能,我们可以在我们的后台管理系统里边操作,我们让商品进行上架,那么接下来呢,我就可以开发我们前端的整个商城系统,包括我们商城的一些首页内容,以及商城的检索功能,以及购物车订单等等。那这个商城系统呢,按照我们以前的架构需求,我们以前说我们整个项目呢,是一个前后分离的项目,那么前端只需要给我们后台为服务发送请求,我们返回相应的数据来进行操作就行了,包括我们的商城也应该是一个前后分离的项目,这样呢,我们也只需要来写接口文档来进行开发,但是呢,我们再来写商城系统的时候,我们出于教学考虑,如果我们用前后分离项目,那么。就会屏蔽掉很多的细节,所以呢,我们最终给大家也发放了我们的整个前端的页面,我们在这儿呢,来进行我们服务端的页面渲染式开发,在我们的代码里边,我们里边有所有的我们要用的HTML页面,那这些页面呢,我们就应该放到各个微服务里边来进行开发,组成我们整个商城系统。
01:11
而我们这些微服务最终的我们的部署架构,我们就像涨的是这样,我们的这个项目微服务,首先我们用户访问所有请求,全部呢,先访问的是我们的N,那N呢,作为反向代理,将我们的数据呢,全部转发给我们网关,网关再路由到我们各个服务。有网关的好处就是我们可以做统一的健全认证以及限流工作等等。而加上NEX,我们在后边部署的时候,我们可以将我们每一个微服务自己里边的这些页面,那页面呢,我们可以写在里边,但页面要引用的一些静态资源,我们可以把他们搬家全部部署到我们的NG里边,那这样呢,我们就做到了我们部署期间的动静分离,那我们说的这个动静分离,静指的就是我们静态资源,我们让N来返回。
02:07
而动,指的就是我们的这些动态请求。那么所有要经过服务器处理的整个业务动态请求,我们就称为动的资源,那这样做的好处呢,就是分担我们微服务的压力,要不然我们将静态资源也放到我们的微服务里边,我们请求一个图片,那都要转到微服务,微服务的tomcat的建立连接处理,再来返回,那么他们看呢,本来并发不就不高,假设我们有3000的并发,结果呢,2000个都是处理图片的,那只有1000个是来真正来进行我们业务调用和处理的,这样呢,就会让我们项目呢,没有支持我们这些高并发的功能,所以呢,我们在这儿提前呢,先给大家理解一下我们将来的这个架构,当然我们在部署的时候呢,我们还会详细的来解释,所以我们在这最终要做到的就是动静分离,那这个动静分离呢,我们主要分离的静指的就是我们刚才说的这个静态资源,哎,这个静态资源呢,主要是图片。
03:12
以及我们的GS文件,包括CSS等一些静态资源,这是我们的静静态资源,那动指的就是我们真正的我们去服务器需要来处理的请求,那这个服务器需要处理的请求,我们的Java程序,我们需要调用数据库,或者要调用一段代码处理的,那么就称为动,那镜呢,它是一个以实际文件存在的方式,他们呢是以实际文件,以我们这个而不是以一段程序以实际文件存在的方式。好,那接下来我们要做的工作,首先呢,将我们的页面复制到我们的各个微服务里边,当我们就不统一全部来复制了,我们开发到哪个服务我们来复制,那么接下来呢,我们刚做完商品上架,我们就要开发商品的整个检索功能,那要有检索。
04:12
的功能,我们先得有首页,比如我们手机分类可以先来进来,所以呢我们先来开发我们整个关于商品首页以及商品检索页的功能,那检索页呢,我们就应该放到检索项目里边,而首页这一块跟商品有关的,包括后来的商品详情,那么就放到商品的微服务里边,所以呢,每一个微服务也只来管理我们自己的页面,那最终做到的就是什么呢?我们每一个微服务都是可以独立的部署、运行和升级的,比如我们商品服务页面升级了,那么除了来修改里边的程序代码,我们将它的视图我们也修改了以后,我们只来替换商品服务,那来到我们的整个前端的商城,那只有商品模块相关的页面可能会发生变化,所以呢,我们就可以来完成,每一个微服务都是独立且自制的,所以这才是我们微服务最终抽取的意义所在,每一个呢都应该是独立自制的。
05:12
他的数据库也自制,包括他用的技术也自制,我们不一定商品服务非要用我们的Java开发,我们用PHP,包括GS弄的GS这一套我们都可以的,所以呢,我们应该是独立自制,无论是从技术层面,还是我们的架构层面,还是我们的业务,我们整个呢都应该是独立自制的。那好,接下来呢,我们先将我们的首页复制到我们的商品里边,我们先来调通我们的页面渲染流程,那调通这个流程呢,我们先来导入在po文件中,我们来导入我们的SIM live,我们来使用spring boot们带来的SIM live,我们这个模板引擎来进行开发,那这个SIM呢,它的优点就是一个自然化语言,它编写的这个页面我们前端直接可以来进行使用,包括它来修改也都行,方便我们前后人员的分工合作,而它的缺点呢,可能是它的性能稍微比其他的模板引擎能稍微低一点。但是呢,如果我们在生产环境。
06:12
开启了我们相应的缓存功能,它的性能也是非常高的,所以呢,来直接来dependency来依赖我们的SIM的整个start场景,我们要使用的是SIM starter,来写一下SIM的start。这个start呢,我们当然不用写我们的版本号,全部由spring BOO的负项来进行依赖控制,那这个start呢,主要给我们导入了模板引擎,我们使用的是它的模板引擎,模板引擎然后我们来点进来,我们这个里边呢,帮我们来导入了SIM live,包括SIM live和spring的整合,包括SIM live一些额外的这个支持项我们都有。我们首先来导入它,那接下来我们将页面也复制过来,我们的页面呢,我们先来到我们的整个有一个叫首页,首页资源,好把这两个资源呢,我完全复制,但复制的时候呢,我们说spring boot的默认规则在这里边呢,它的这个static文件夹是来放静态资源的,好我们将静态资源的index我们来复制到static文件夹里边,好来点OK,那静态资源复制过来以后呢,我们再来复制我们的页面,那将我们的inex HTML页面我们复制到我们的timeless timeless呢就叫模板,模板里边存放我们的页面,我把静态资源呢,先都关掉好,然后呢,我们将页面放到我们的PA里边,好,我点OK。
07:41
那这样呢,我们就放好了,但SIM live要使用,我们就得先做一个预先的配置,在这里块的配置呢,我们就算不配置,用默认配置,其实启动也可以使用,当然我们在开发期间,我们先配置第一个我们先归关闭SIM live的缓存,在SIM live catch这一块我们先写一个false关闭缓存,这样呢我们开发期间就能看到实时效果,这是第一个,第二个如果我们想配置,还可以配置我们的SIM的前缀以及后缀,那大家能看到默认呢。
08:15
所有的这个前缀都是class pass tablets这个项路径下,也就是我们要找所有页面都是来到我们的类路径,我们resources这个文件夹有这个标志,那它就是类路径,来到类路进的temps文件夹下来找我们对应的我们后缀有一个点HTML,也就是找我们的HTML页面,那相当于以后我们的CTRL只要返回的不是接数据,而是一个字符串,那按照这个字符串呢,我们spring mvc的视图解析器就要拼串来到我们的视图页面。页面我们找,找到路径前缀就在这找后缀呢,我们就是来找这些HTML页面。而且呢,由于我们这些微服务也能提供我们接口功能,CTRL里边呢,这些都是一些rest接口,好rest接口呢放在这儿,所以跟web页面有关的,我们单独再放一个包模块,好这个包模块呢,我们就叫web。
09:13
这一块呢,我们来整体是来开发我们的web页面,我们要放一个包,不是放一个类,我把这个呢删掉,好来放一个包,我们将专门进行页面跳转的这些controltrler,我们全部放在这个包下,我就叫web,那其实这些rest接口呢,那就是对接我们分离的项目,包括手机的一些APP的,所以呢,如果我们想要修改,那么在这个CTR了,我们可以给它起名叫APP。我们以后呢,对接我们的APP应用,我们来写一个do,让它呢整体改名。那所有risk接口都同从这来提供,而所有的ctrler都在这儿来提供,好,那默认我们先什么都不写,我们直接来重启我们的这个商品服务,我们来重启一下,来看一下我们的这个页面能不能访问。
10:00
那静态资源呢,默认是能访问的,但是它的访问路径我们一会来试一下该怎么访问,来稍等让它进行启动,好,我们来稍等让他启动,那先来访问我们的整个product项目,那product项目呢,我们来一会访问它端口,我们整个项目呢,也没有项目名,我们在这一块呢,没配置项目名,配置项目名呢,倒会给我们造成很多的麻烦,好,我们这一块呢,先让它启动,我们来等待一下,好,我们来访问我们的product项目,诶我们这个项目呢,一进来我们发现这个页面是直接可以访问的,能访问的所有原因。是我们的整个项目静态资源也是OK的,包括页面呢也是调整好的,那静态资源呢,我们是放到了static文件夹下,只要static文件夹下的所有东西我们想要访问,只需要这么来访问,我们来先来看一下静态资源当前项目下,因为我们在static文件夹下有一个index,那好我们就来写一个叫index下边的,那我们还有一个叫比如gl.CSS那么就来写上gl.CSS回车。
11:09
这块呢,是我们的404给我返回404 404的原因来看,我们访问CSS的时候还要加上CSS文件夹路径,好我们来写在这走。推车,那么这些静态资源呢,默认都是可以访问的,只要按照我们的要求来,我们在这儿来记录一下我们的页面开发五,我们引入了模板引擎,模板引擎,模板引擎呢,我们是先引入了SIM雷的start SIM雷的咱们这个start start引入之后呢,我们来给它关闭了缓存。然后关闭了缓存,这样呢,我们开发期间我们就可以实时看到数据,这是第一个第二个。我们只要按照要求,静态资源,静态资源都放在我们的static文件夹下。
12:01
我们就可以直接访问,就可以按照路径,按照我们的路径直接访问。包括呢,我们的页面放在times模板引擎下,页面放在我们的time。这个下我们也可以来直接访问。可以我们直接访问,而我们这个index页面,我们发现啊,我们访问我们这个项目的时候,我们就算不敲我们的页面,我也能访问到这个index页面,为什么呢?原因就是spring boot也做了默认配置,Spring boot默认spring boot。那访问项目,访问我们这个项目的时候,默认默认会找index,默认会找index,默认会找我们的index,那所有的这些我们全在spring boot的自动配置里边,比如我们可以来参考有一个叫web mvc,我们的auto configuration门外spring mvc的自动配置在这个自动配置里边呢,我们这些规则其实都有,大家如果看的话,比如我们这个自动配置里边首先加了黑的htv method filter,这个是来解决我们页面发送请求。
13:15
比如表单提交的时候,我们提交put或者delete方式请求。我们将请求方式转成对应的put以及delete,这是我们的method filter,包括我们还可以看到这有一个resource location获取我们的整个资源路径,但这个资源路径呢,我们在下边配置的时候,我们可以来看一下,在下边呢,它也配置了我们的视图解析器,这些都有,包括呢,默认前缀后缀,这都有,我们前缀后缀的指定的都是在spring mvc里边,我们也可以来指定视图解析器的前后缀,包括日期、格式化等等所有的信息。啊,我们看一下我们刚才的静态资源的这一块,比如我们往下翻,在下边呢,我们有一个叫我们来看下边有一个叫我们的这个resource handler的资源处理器,资源处理器里边呢,它在这里边就添加了一些默认规则,比如我们默认访问web下边的所有东西,它可以在这些类路径下resources下来找web等等等等。
14:14
那以前我们来讲解spring boot的时候呢,都给大家示范过这些这些配置呢,其实都在这儿,我们继续来往下看,我们就有我们的静态资源的配置。静态资源呢,我们来看一下下边这一块有一个叫我们看到这这有一个叫welcome page handle map,就是我们欢迎页的这个映射规则,比如呢我们的欢迎页等等,这些都在哪找呢?我们来看一下他在我们的这个spring mvc配置的这个静态资源路径这一块来点进来我们会发现我们杠双新当前目录下的所有请求,我们都可以去静态资源路径下先来去寻找,而静态资源路径呢,我们在这一块配置了resources properties,我们看这能获取静态资源路径,现在资源路径点过来,点过来,那这一块列举的是这个常量,也就是下边只要我们四这四个位置来放到所有资源我们都可以来找到这些静态资源,什么意思呢?我们resources下边。
15:14
这个resources首先是类路径,大家先别看这个文件夹名,不管这个文件夹叫什么名字,它都是类路径,都是class pass杠就是这个类路径。那这个类路径下如果还有个resources,那就是它里边有一个resources,我们把我们的静态资源放在这儿也行,包括呢,放在这个static下也行,包括呢,我们还有public下边也行,我们来点过来,如果还有这个public也都行,这就是我们说的静态资源的配置规则,我们放在这儿。而且呢,我们还能看到在配置它的时候呢,我们这还有一个叫get welcome page获取我们的欢迎页,欢迎页呢,我们先拿到我们的index htm index htm,就是在静态资源的这个路径加载里边去来找我们index h页面,现当我们默认访问就是会找这个in htm页面,所以我们看到了整个效果,我们只需要把页面往进一复制,我们这块呢就有内容了,那我们先将我们基本的页面开发,我们先来整合进来,那么下一节课呢,进行详细开发。
我来说两句