粉丝7056获赞5.4万

张伟一一 ssm 框架企业应用实战是一本由千峰教育高教产品研发部所著的张伟一一进阶书籍,他详细介绍了使用 ssm 框架开发企业应用的整体流程和基础知识,旨在帮助读者更好地应对实际项目中的各种问题。在张伟一一应用开发中, ssm 框架是常用的轻量级框架组合,包括 screen、 screen, tap 和迈巴铁。这些框架各有其特点,可以相互配合使用,使得这样被应用开发更加高效简单。首先, ren 框架是一个全面的企业及应用开发框架,提供了多种功能,如依赖注入、 aop 共等。通过 spring 框架的使用,我们可以更好地管理项目中的各种资源,实现代码的分层设计和模块化, 提高开发效率和质量。其次,迈巴铁斯框架是一个优秀的持久层框架,支持自定义 sql 存储过程以及高级映射。它可以帮助我们简化数据库操作, 高开发效率。在 my bodies 框架中,我们可以通过编写 s q l 语句来实现对数据库的操作, 同时也可以通过映射文件来定义 s q l 语句和 job 对象之间的映射关系。最后, ream tap 框架是一个基于 job 的实现的设计模式的请求驱动类型的轻量及外部框架,它可以帮助我们更好地组织 和管理外部应用中的各种请求和响应。在 supreme type 框架中,我们可以将外部请求路由到相应的处理方法中,并通过模型对象和仕途对象来实现请求和响应的处理。通过这本书 的实战案例,我们可以进一步巩固和运用章的意义。 ssm 框架的知识点包括项目需求分析、设计思路、代码实现等,这些案例都是实际项目中经常遇到的问题。 通过这些案例的学习,我们可以更好地理解 s s m 框架在实际开发中的应用和优势。

各位同学大家好,我是陈轩一棵树。那今天我们就简单来聊一下工厂模式。本期视频主要分为两块内容,为什么需要工厂模式?它的作用是什么?如何实现工厂模式代码演示加解析优缺点?好的,第一个问题,为什么需要工厂模式?工厂模式的作用或者说优点是什么呢? 首先是解偶,我们通过工厂模式把对象的创建和使用的过程分开,也就是说 classa 想调用 clasb, 那么 a 只是调用 b 的方法,而不需要去管 b 的实力化,或者说他不需要去感知 b 是如何被实力化的,被创建出来的,创建的这个工作交给了工厂类, 那这样就达到了对象的创建和使用的过程分开解偶。第二点是代码复用。如果说创建对象币的过程需要一定的代码量,里面包含了各种各样的逻辑,那么有很多地方会用到 这块代码,那在这种情况下可能就会出现很多的重复代码。那如果把创建对象 b 的代码放在工厂里进行统一管理, 那么既可以减少重复代码,也方便以后对 b 的创建过程进行相应的修改和维护。所以说基于这种情况,我们可以提高代码的复用率。第三点,符合迪米克法则和单一指责。 也就是说使用者他只需要知道如何去使用产品,以及负责如何用产品,而无需去感知创建的逻辑。好的,我们再来简单回顾一下,为什么需要工厂模式,它的优点和作用是什么呢?首先是解偶,其次是代码复用, 然后呢,是符合提米特法则和单一职责。接下来我们再来看一下有哪些工厂模式,我们该如何去实现他们。那工厂模式一般有三种,简单工厂模式,工厂方法模式、抽象工厂模式。其中工厂方法模式和抽象 工厂模式是 guf 二十三种设计模式中提及的。好的,我们来看一下简单工厂模式,他定义是创建任务比较简单,一个工厂可以把所有创建活都干了,那这种情况下我们可以选择简单工厂模式,那来看一下我们的代码, 这边呢写了三个类,都表示各种牌的车,奥迪、奔驰,宝马以及一个车的,就 car, car 的 interface, 一个接口, 以及我们的 simple factory 就是我们简单工厂。还有我们的演示类 simple test, 那我们来看看它的类图,在这个类图中呢,我们可以看到我们以 car 为一个接口,其中包含了一个 shoes brand 打印车的牌子的这么一个方法, 然后由三个类去实现,它分别是奥迪、宝马以及奔驰,他们会各自输出对应的品牌。好的,接下来我们来看一下代码, 首先是这个 interface 的卡,就我们这个卡接口,那其中我们定义了一个 shoes brand 方法,然后是 bmw 这种宝马实现了这卡接口,内部这个 shoes brand 进行一个重写,输出了一句,这是一辆宝马汽车, 那奔驰和奥迪的实线是相同的,基本上是类似的。再来看一下我们这个简单工厂类,就是 simple factory, 那在这工厂中我们写了个方法叫 give me a car, 意思就是我要通过这个方法调用来获取一辆车,然后它的返回值是一个接口类型的 car, 入餐是一个 string 类型的 brand name, 也就是一个品牌名。那我可以根据我输入的 bmw 或者是 benz 或者是奥迪来获取不同的车,就我们前面定的那个车的类型,我们可以是宝马,奔驰,奥迪任何一种。好的,我们再来看一下它。测试类, 在证明方法中,我们定义了一个接口卡类型的对象叫 my car, 然后去用 simple factory 点 give me a car 这个方法进行获取,那输入的是 bmw, 按照上面的逻辑,他会返回给我们一辆宝马汽车, 如果不为空,我们就要用这辆车的输入的 bra 的方法进行一个对应的输出,那获取其他牌的车也是一样的逻辑啊。好的,简单总结一下这个简单工厂的优点和缺点是什么呢?优点就是逻辑简单分装了创建逻辑啊,将创建和使用进行了解,偶, 那缺点就是维护成本高,需要不断修改,工厂内部实现,不符合开辟原则。这句话怎么理解呢?就是后续如果我需要加别的品牌的车,那我是不是需要在我们的工厂中,就我们 simple factory 中不断的加逻辑,不断进行修改,来一种车加一次,来一种车加一次,那维护成本就比较高了。好的,那我们在 来看一下工厂方法模式,它是我们前面简单工厂的升级版,对于前面的我们的工厂进行一定升级,也就是说我们定义了工厂接口, 制定了规则,但具体的实线呢?要下沉到具体实线体去控制。我们来看一下这个类图,就是其他类我们都不变,但是我们现在重新定了一个咖啡的垂的这么一个接口,里面给了一个方法叫 build a cut, 反映的是一个 ca 类型的对象。那至于这个接口,我们有两个实线体, 一个是 bmw factory, 一个是 benz factory, 内部去重写这样的方法,然后会有对应的输出。好的,我们再来看一下具体的代码。 首先这个咖啡个锤里面就一个 buder car 方法,然后我们用两个类去实现这个接口,内部对这个 buder car 方法进行重写,分别输出。这是宝马工厂,我们只生产宝马汽车,以及这是奔驰工厂,我们只生产奔驰汽车,然后返回 一个宝马汽车,或者是返回一个奔驰汽车。好的,我们再来看一下这个测试类,在这个测试类中呢,我们只需要知道哪个工厂生产你想要的车,比如说我们想要个宝马车, 那我们只需要知道哪个工厂是生产宝马车的,比如说我现在想要宝马车了,那我知道宝马厂会生产宝马车啊,那我就扭一个 bmw factory, 然后呢我需要的车就直接去调用 bmw factory 的对象咔 factory 的 build up car 方法,然后就能获取刚才我们说的那个宝马车。那这里和我们前面那个简单工厂的差别是什么呢? 我们前前面的那简单工厂他就只有一个工厂,而这里有没有定义了两个工厂,一个是 bmw factory, 一个是 band factory, 这两者之间的差别大家可以感受一下。现在简单工厂我们其实是没有选择的,就只有一个工厂,那现在我们知道了他有好几个工厂,我们只要需要选择 对应需要的那工厂去进行创业就可以了。好的,我们再来进行下简单的总结。那相比于简单工厂,我们的工厂换换模式更加利于扩展和维护。比如说当新增了一种车的时候,那我只需要对应创建具体的产品类和负责生产新品种车的具体工厂 就 ok 了。那这个是符合开闭原则,便于扩展的。那他缺点是什么呢?就是我具有一定局限性,按照现在的这种工厂方法模式,他只能生产一种产品,这个是由我们接口内部的方法制定的,因为他只有一个方法吗?那比如说我要生产 bmw 牌子的 某种级别的车,比如说我可能要生产 b 级车、 c 级车都是 bmw 牌子的,那现在这个工厂方法模式是不支持的。好的,我们再来看一下抽象工厂模式。抽象工厂模式主要用于解决一类产品的创建问题, 比如说我们前面提到的我们要创建各种牌子的 b 级车, c 级车就不同级别的车。那这个可以从字体向上抽象归纳角度去考虑,可能我们底层有多种抽象,然后把它归归类,可以找到归为一类的东西。 比如说前面提到的各种级别车啊,也有可能是篮球、足球这种,然后每个工厂去负责创建不同牌子的篮球、足球。这个可以理解为抽象工厂的工厂接口呢,比工厂方法的更多,功能更强大。 我们来简单进行一下区别。工厂方法模式只有一个抽象产品类,而抽象工厂呢,会有多个工厂方法模式呢?它的具体工厂类只能创建一个 具体产品类的实力,而抽象工厂模式可以创建多个。好的,我们再来看一下这块代码的演示类图。首先我们定义了一个 of strike 的 cafectory, 内部有两个方法, 分别去创建 c 级车和 b 级车,就是我们这里的 build a c class car 和 build a b class car。 然后呢我们定义两个类实现,它分别是 benz factory 和 b m w factory, 那相信这个大家已经比较熟悉了。然后我们又定义了 b class car 和 c class car 两个接口, 内部呢包含 show class b 和 show class c 方法,那下面我们定义了 v s b 和 b m w 三这么两个类去实现这个 b class 卡表示这是 b 级车,这个 b m w 三也是 b 级车。 然后呢,这边的 b n c 和 b m w 五这个其实也是一样的,就表示这个是 c 级车,这个也是 c 级车。那相比于我们前面讲到这个工厂方法模式,这边我们的产品种类更多,他的工厂中也能创建不同种类的产品。好的,下面我们来简单看看代码。那首先是 abstract 咖啡 factory, 内部呢,有两个方法分别表示创建 b 级车和创建 c 级车,返回类型是 b class car 以及 c class car。 再来看一下我们的 bmw factory 和 bands factory, 这两个实现了上面这个接口,然后内部重写了接口中的方法。 那再来看一下我们的 b class car 和 c class car 这两个接口,内部呢就是 show class b 和 show class c 两个方法,那在这两个接口下,我们分别用两个类去实现了,它是我们的宝马三系以及我们的奔驰 b 级车,还有我们的奔驰 c 级车和宝马五系车, 那这两个具体时间类其实都是表示我是哪一个级别的车?好的,我们再来看一下我们的测试类, abstract the factory test。 那在这个类中呢,我们首先要知道我们要哪种车,比如说我要宝马车,然后呢,我要宝马哪种级别的车呢?比如说我要宝马的 b 级车。 那此时我可以首先去获取 bmw factory, 确定我是生产哪种牌子车,然后再由这个 factory 去生产对应级别的车。就比如我们这边的 bmw factory 点 build a b class 卡,也就是我获取 bmw b 级车。那当然也可以是奔驰的 c 级车嘛,就是我们这边的 bmw factory 点 build a c class, 就是我们这边的 benz factory 点标准 c class 卡。那相比于前面的工厂方法模式,我这边就支持啊,生产多种类型的产品。好的,我们再来简单总结一下这个抽象工厂模式优缺点。那首先抽象工厂模式隔离了具体的生成,将创建和使用进行节油, 利于扩展和维护,让所有的具体工厂呢,都实现了抽奖工厂中定义的那些公共接口,只需要改变具体工厂的实力,就可以在某种程度上改变整个软件系统的行为。那其次, 当一个产品组中的多个对象被设计成一起工作时,比如说我们前面的都创建了 b 级车,对吧?他能够保证客户端始终只使用同一个产品组中的对象。 最后呢,就是增加新的产品组,很方便,无需改变已有的系统,符合开辟原则。这个呢,其实就是我不改变现有的代码, 我新增一个时间类,就能扩展我们之前说的那个产品组。他缺点是什么呢?就是增加新的产品等级结构麻烦,需要对原来的系统进行较大的修改, 那甚至需要修改抽象层代码,这显然会带来比较大的不便嘛,违背了开笔原则。这个缺点怎么理解呢?就是我们前面的抽象工厂已经定义好了我生产 b 级车 或者是生产 c 级车,那如果说我现在要从不同的维度去进行生产,比如说我不再生产 b 级车、 c 级车了, 还是说我生产四个轮子车,六个轮子车,那这种时候可能就要连那个抽象工厂一起修改了,那这种情况下是违背了开辟原则的。好的,以上就是本期视频的全部内容,欢迎大家点赞留言收藏,谢谢!


m 九 ok 那么我们说这个呢?扎腕呢?他有三大技术体系平台,我们也了解一下。那么第一个呢,我们称之为叫做扎腕的标准版,也就是扎腕 s e。 这个扎腕 s e 这个英文的全拼是什么呢?我们过来一块试一下。来 一叫做走进加班加班语言九啊 ok 那么叫做扎马 s e 扎马 s e, 他的英文全名其实叫扎马斯,三代的比利是 eta, 天文一个叫扎腕的标准版。扎腕标准版。那么扎腕标准版呢?它适用于开发叫做 cs 架构的应用程序对吧?那 什么是 cs 架构的英语程序呢?叫做 clat cl i ent flant sorry 叫做客户端服务器对吧?什么叫做 cs 架构的应用程序呢?我把这笔记保存一下啊。 什么叫做客户端服务器呢?就是平时或者说昨天带着大家安装的这些软件,比如说微信啊, qq 啊等等,这些其实都是 cs 加购的应用程序。 什么特点?就是我们要下载人家的安装文件,下载到我的本机电脑中,然后呢,在本机电脑中进行安装。那这时我们是 不都是客户啊啊,都是,或者说都是用户对吧?我们要把这些安装文件下载到本机的电脑当中来,然后呢,在本机电脑或者在用户的电脑上 进行安装,然后再进行使用。那么这个就是 cs 加购的应用程序啊,需要下载客户端到本地,然后呢再进行安装并使用啊。 cs 加购。 这么相应的,下一个叫做扎弯的企业版本,也就是扎弯,意义叫扎弯,意义叫做扎弯的 nt plas t 二平安 s nt prase ebc 他称之为叫做扎玩的企业版本。那么扎玩意义呢?他是 实际上擅长的叫做是 bs 架构的应用程序,叫做 bross s 一二 sorry, 称之为叫做浏览器 服务器。浏览器服务器。那什么是 bs 架构的应用程序呢?也就是说平时咱们使用的这些淘宝啊,京东啊,幺二三零六网站呢,这些都属于 bs 架构的应用程序。也就是说我们通过浏览器输入一个 ur 壁纸, 就可以访问人家的应用程序了是吗?那这种都是 bs 加购应用程序。那么说呢, cs 加购和 bs 加购对吧?啊?都有什么个有什么优点或缺点呢,对吧?比如说 cs 加购的应用程序啊,那他就不 易于维护。听懂吧,什么意思呢?大家要注意。比如说我们现在这个 qq 对吧? qq 他有一个小 bug, 那人家腾讯的这个研发工程师发现了这个 qq 有个小 bug 之后,他是不是得修改呀啊? 或者说 qq 现在又升级到了新的版本,又有增加了新的功能。那这时我们通常用户怎么进行升级,怎么进行解决那些 bug 呢? 那我们身为用户的话,那是不得下载去人家腾讯的官网下载补丁,然后重新安装啊, 对吧?所以说这个对于人家腾讯的研发工程师来讲,那就不易维护。比如说有一些卖软件的企业对吧?他得拿一个盘到人家 用户那里,然后给人家进行解决问题,或者是软件升级。听懂吧 啊。所以说 cs 架构的应用程序啊,他不易于维护。嗯,那当然 cs 架构的应用程序他也有优点。优点是什么呢?那就是他的一些数据啊,可以保存在用户的 电脑当中。那么对于人家腾讯这个企业来讲的话,人家可能会更加的节省一些资源, 听懂吗?嗯,那么呢, bs 架构应用程序,大家可以能想到了,有什么好? 那他就是易于维护。比如说我们平时登的淘宝啊,京东啊,幺二三零六啊,人家说搞个六幺八,搞个双十一,人家要推出一些新的功能,要推出一些新的优惠券等等。那 对于我们用户来讲,需要过多关心吗?都不用,对吧?哎,我们当下一次通过浏览器访问人家应用程序的时候,人家直接就是更新好的,全新的一个应用程序了啊,那都对于人家 程序员来讲,那人家只需要把升级后的项目部署到人家的服务器上就可以了。对于用户访问的时候,那就直接就是更新好的了。所以说对 bs 架构的应用程序啊,他就 比较易于维护。哎,我们每次登发现,哎,他的页面经常变,对吧?因为呢,人家 比如说这个京东的程序员啊,升,想要升级,直接把升级好的部署到人家的服务器上即可。那么 bs 家购多好的地方。那可能对于人家京东啊,淘宝啊那些企业服务器的压力是不是就会更大一些啊,因为数据都得保存到人家的企业的服务器当中去。 那么当然呢,以后呢,我们主要做的就是 bs 架构的应用程序。 好吧, ok, 那这是扎弯意义这是扎弯意义。那么呢,还有一个呢,那就是扎弯。 m e 叫做扎弯微型版 来叫扎腕, m e 叫扎腕, macomicl bbc 叫做扎腕的微型版。这个扎腕的微型版,它适用于开发什么东西呢?我们可以看一下对吧。 微型版呢,它可以适用于开发一些,比如说移动电话呀,机顶盒呀,汽车导航啊等等等等。那么现在呢,其实已经没有人用这个 m e 了。但是呢,我不知道有些小伙伴有没有见过这个图标, 大家用过那种老手机吗?那种老式的手机,现在你们这个年代的好像不一定能见过对吧?我们说老手机啊,有一些什么俄罗斯方块啊,什么推箱子啊,贪吃蛇那种小游戏 对吧?那些小游戏一打开的时候呢,通常会有一个这样的标啊,那就意味什么呢?那就是用人家家玩 m e 写的。 那当然,现在移动端还用这东西吗?没用了。取而代之的啥呀?是不叫做安卓呀,哎。取而代之 实际上是安卓,安卓。那么相应的我们现在学的是什么呢?学的是将把 s e。 也就意味着我们这个 se 学完了之后,其实大家可以有两个发展方向哎,就是我们这个此刻的这个 se。 整个课程学完了之后,有两个发展方向,一个,那就是走扎弯意义这条路对吧?哎,做一些大型的电子商务网站,以及大型的一些企业及应用等 啊,走扎尔意。那相应的另外一条路呢,其实你也可以搞安卓,安卓的底层也是扎瓦,可以搞移动端, ok? 那么以上呢,就是扎瓦的三大体系平台啊, ok。

hello, 上一节呢我们分享了一下这个 optional 的一个基础用法,它呢可以去消除我们在代码开发中的一些呃,一幅语句啊,或者说一幅 ls 语句,那其实也就是下面这个写法,那这个写法呢?其实并不是让整个一分,那今天呢给大家带来一个,我们对 optional 进行一个封装,然后做一个申请。 其实在 g t k 九里面是有这个一一服 brand 调和 l s 的一个方法,就是说 g t k 九里面提供了这样一个特性,去做一个他这个嗯消除 e f l s 的一个用法, 但是 gdk 八里面其实嗯没有这个方法提供,并且现在其中大部分还是用的 gdk 八。所以说,呃,如果说你在平时开发中觉得这个衣服 s 很多很多,或者说你的代码逻辑也很大很大的话, 经常欠套一菲尔斯,那可以去自己封装一下这个高性能,然后去使用它,那我们可以先看一下这个基础用法吧, 然后下面这个方法是他一个重新给我们的干掉好这个基础的一个用法。其实我们可以看到 option 的 这里判断了一下,如果他哎存在纸不为烂,那我们使用下面这个消费型的一个结构去 处理它,然后如果说它为浪,那就是这个 robo 接口是不这样的一个方法嘛?然后没看到我们封装的是哦不行,都传进来了,然后再申明了一个消费型接口,一个 robo 接口,消费型接口处理这个衣服里面的条件, rob 接口处理这个 ls 的条件,所以这它呢通过我们封装一次,然后就把衣服 s 给处理掉,那其实可以看到这里, 哎,我们这里可以看到一下一幅 print 调到 airs 这里,我们把 option 的传进来,然后我这里传一个又一个 user 吧。哎,我看我上面又一个 user 字兑现了,没问题啊。然后柚子帕布尼克 是他,算了吧,这样吧,这样简单一点,也就是其实他只是接受一个对象,你围不围浪而已啊?就是说这个地方,然后他把这个 option 传进来,如果说不围浪,那他就把这个输出,如果围浪,那就是这个没有意思。而且 president 那么可以看一下 他的一个执行效果,哎,他打印了这一句话,且这个结构也好看一点,是这样的,那我们再优化一下,就是这样的一个结果, 哎,这样的话,其实你把收上去就是一行代码就解决了所有的事情,但我还是觉得这里又一个 user 应该是没问题的,是吧?另一个 user 没问题的, 刚刚是因为改了一下,然后他没反应过来,然后有一个对象让我们可以看一下,哎,他就把我这个舞蹈对象给打印出来了,那其实这样封装的话,你就会觉得,哎,我就不用再去写衣服,哎呦死了。然后直接通过他,我把东,我把我的对象丢给他,然后他就去帮我们判断。如果说这里 不为难,那我这里走的是什么逻辑,是吧?那这里只是一个输出,但其实这里我还可以这样来,然后这样输出一下,或者说是这样,然后这里写一下, 这是 u, 哎,这样,是吧?那这个 u 其实就是因为它是这个 consumer 这个消费型类型,你看它这个里面,我们可以看到它 accept, 它是需要接受一个参数的,这个参数是怎么来的呢?就是我们这里 他判断了这个不为难的这个数据用户对象 u, 哎,我们可以任意把它 u 打印出来,然后我们运行一下,看看 一样的把这个用户对象都给打印出来。所以其实这里 option 的点 get, 为什么就是它找到它,那这里看一下,再把它简化一下写法,哎,这样收上去,然后这个也干掉,哎,就是 这样一行,那再收一下,就是把这个直接打印,所以这样的话可能大家还是这样写全一点,大家可能看着更舒服一点。那其实这个方法呢?上面这个方法我们可以看到他好像是只能判断一些单一的类型, 那下面这个方法我们看一下他又是怎么做的呢?这个方法只是说做了一个简单的一个,再简单的一个升级吧,判断了一些类型,你看 option 的点 if print, 然后我们基于这个发型 记住点 get, 拿到一个发型,发型如果是死坠呀,啊,他不为空啊,那就是这个方法,那并且我们判断一下是不是布尔值啊,也可以走这个方法,那我们可以判断一下其他的这些类型,是吧? 也可以走这个方法,否则的话,哎,走这个空的这个方法,也就是钥匙这个方法,也就是说这里呢简单演示呢,就是说如果是死猪一样是布尔池啊,也可以去处理,那其实这里就是我刚刚写的 fox, 哎,如果你是 fox, 我一样可以对它进行一个处理, 但我们可以看一下,他一定会去打印下面这句话,你看他是 force, 如果是处呢?是吧?如果是处, 也就是说以前我们这里传的是一个对象,现在这里也可以传一个条件了,是吧?如果说大家写这个 demo 呢?这个只是一个简单的一个演示 demo, 如果说你还想把它再封装的更好一点,支持更多的数据类型,甚至你可以把这个发型用的更好,那是不是一个消除衣服要死语句的一个?嗯,工具类,你就封装好了,那 是在开发中,那你就只需要把你的条件传给他,然后他就告诉你,直接在下面你就满足这个条件,我怎么去做,不满足这个条件我怎么去做,是不是就一步就到位了? 那我觉得这样的话,呃,其实你自己在用它的过程中,不仅你的代码看着更高级,而且你会成长的一个经验就是你对新特性其实使用是更全面的。因为你看这里他不仅是用了 oppo, 还用了考试用这个消费器接口,甚至把这个 rap 也用起来了,用进来了,然后用起来了之后呢?我们还有这种新特性的一些写法,这些更简洁的一些写法, 是吧?然后这个一收,这个一收,然后再一收,把它收起来,这里加两个冒号,哎,这个调用,然后把这里给他一伸, 看,这样是不是就是看这个眼睛,把这逗号一收上去,然后甚至我再把这里代码给他收上去,其实就是一行代码解决了一非要死,那当然我们的业务逻辑多了之后,那其实我就建议大家还是 把它这样给放下来,对,衣服里面我们怎么做是吧?拿,拿到这个对象之后,我们怎么去处理我们的这个业务逻辑代码? 业务逻辑是吧?如果说包括像这下面,这里我们只是打印了一句话,其实也是一样的,这里也是不满足条件的业务逻辑。这样的话,其实我觉得至少你在使用它的过程中,你会越用越习惯,越用越方便。 那你是少了个啥?少了个大括号吧。 ok, 今天的视频呢,就分享到这里,如果大家对这个 demo 有不熟悉的地方,其实可以在评论区留言,当然以后想要这些 demo 的呢,可以呃,我后面会上传到 get 仓库,大家可以去下载。好,今天就分享到这里。

好,刚刚我们了解了这个 b s 结构的一个特点啊,说白了这一个最根本的特点就是 好,他是通过互联网,然后我们通过这个浏览器发请求,然后呢服务器端来响应,这是我们最经典的请求响应模型。 好,这个推送模型的话呢,后面也会看到简单的案例啊,那么下面接下来看看我们开发嘉娃外婆应用的步骤,应该改成嘉娃外婆应用。 好,首先的画面是 创建一个 wifi 项目。好,这里用到的工具好,我们是直接使用这个。呃, equips, 然后是 java 一一版本吧, java 一一版本就是我们现在在用的这个软件。 好,可以创建外国项目。当然原先一度的话呢,就是还有另外一个工具,比较流行的这个工具好,叫 mail, 但现在的话这个是要收费的啊,收费的啊,在国内的话原先都用盗版的,但盗版的话后面一度就是 好买。 gbs 公司的话好,针对中国区域,然后就做了限制,很多的限制,因为中国的基本都是盗版的,大部分都是盗版的,所以这个限制了之后就麻烦一点啊,现在还是 有盗版的还是可以用,但是的话呢,好,这个标准的这个好,一个 hips 的加瓦一版本呢,也已经够好了,对吧?啊,虽然还比不上麦 hips 那么快捷方便,但是基本上也差不多了, 所以,呃,公司的话也一般都转到这个佳娃一上面来了,把这个啊工具上面来了,所以我们现在讲的话,改造成用这个版本啊,这个工具啊,就是我们天天在用的这个工具,对吧?用这个好, 下面的话呢,好,看看这个步骤,首先是我们新建一个项目, 然后把这个项目的目录结构准备好,以及编写相关的 gsp 啊, separate 之类的一些外部组件,还有加瓦类似之类的,写好之后能把它部署到我们的一个 唐家塔这里的外国服务器上面啊,要支持 java, 支持 java 外国接视频, severta 的这类服务器上面也可以叫做好 severt 引擎部署项目等。 好,应该是这么说把, seven 引擎上面, 这里搜不到引擎呢。好,这个有多种服务器啊?好,我们用的最多的是 tonkat, 所以后面的话主要是用这种 tonkat 服务器,这个也是阿发起的的一个服务器。 好,然后把我们写好的 web 应用部署到谈 get 上面之后就可以运行服务器啊。好,服务器的话会把部署到这个服务器上面的 web 项目呢,给它装载进来就可以用了啊,就可以用,是这么一个步骤, 所以接下来的话呢,我们需要把 ton cat 把这个准备好,到 totttttttttottet 服务器呢到可以到这个网站上面下载。 好,官方网站上面我所本地已经有了啊。好,当然这一个 equips 里面它也自带了一个基于 ton cat 的一个服务器,待会会看到 我们还是用外国 top cat 相对来说最好啊,所以可以进到阿发起点 o r g 到这一个网站上面,阿发起基金会啊,阿发起是一个软件基金会,到这里的话 ibm 啊等等这个公司呢?好,他是对他进行了这个投资啊,投资 好,这里面阿发企业服务器也好, top cat 服务器也好,都是他的一些呃,流行的这一个服务器,还有架网上面的很多的框架,很多的一些组件都是在这个阿发企业上面 这个基金会里面贡献出来的,所以加瓦开放的人的话,对阿发起还是心诚感激的啊。对,这一个基金会啊,里面大量的框架,包括原先流行的是叉十框架,是叉十二框架, 都是阿发型组织这个基金会下面的。啊。好,那么你可以看这里面的 projects, 就是你们的项目,阿发企基金会的项目的项目,项目的话各种各样的,这个显示原网也不要放一样。 好,各种各样的项目,找大量的项目,大量的项目。这里的话呢,好, http, 这个就是阿发企服务器,还有唐开头,唐开头找到 t 开头的, 踢开了,这里面一个汤开的,看到没有,他们开的,他是一个解释的话,加瓦 survey and gsp 的碳碳的容器 叫做是外国容器或者 select 引擎。好,这个容器容器的话呢?好,所谓的容器或者引擎都是相同的概念啊。容器容器呢?好,说白了就是好管理我们一些组建的 生命周期的一个引擎,所以这个 select 引擎的 select 容器的话,实际上就是好,无论我们 gsp, select 部署到上面,然后它管理这些家务外部组件 哦,包括嘉宝那个对象的创纪,然后对对象的销毁,这些都是由他去做的。嘉宝组成的生育周期的管理是交给这个容器管理的,相当于保姆一样。他的容器的。好,那么这个汤开的就是一个 select 和 jsp 这个 java web 组成的容器吧。好,点开它,这是市场份额最高的一个容器啊。好,然后你可以下载哪一个版本?下载版本的话, 这不是说下载最新的啊,而是下载相应我们这个工具它支持的的相应的这个服务器啊,所以说这个我们这个工具它支持到最高版本是什么?那我们可以下载这个版本 啊,如果你呃这个工具这个软件 ps 他不支持这个弹开的九的话,你下载过来用的话啊,会有些问题吧,所以可以看看窗口 window 首选项 c, 然后下面的话有一个 sever, sever 里面看看运行时环境的。运行时环境 朗泰呢,是吧?这个运行时环境啊,点开啊,点开,点开可以看到啊,这边的话我是配了一个阿发解弹开的。好,你可以编辑一下,看此地方,下面我安装了这个弹开的。好, 这个八点五点六,然后的话如果没有,你可以 add 添加一个,添加一个就可以看到里面支持的各种各样的这个服务器,大量的这个好接头仪的服务器啊, 好,各种各样的。二路口的啊,其实就是三公司的这一个格莱斯 fish, 这个也是啊,免费开源的,这是二路口官方的,就是嘉瓦官方的。 好,然后的话还有啊捷 boss 啊,捷 boss 的各种版本的服务器啊, ibm 的外波斯菲尔啊。 好,我们选择阿发启,下面看看,这个已经支持到了九点零,所以下载九点零应该也没有问题,对吧?这看到这个支持的版本啊,如果他没有支持最新版本的话,那你就不能下最新版本啊, 否则的话他是没有经过测试的,你用的话那可能有问题。好,所以我们现在他既然已经支持这个阿发曲弹开的酒,所以我们可以下载这最新的酒,当然这个酒不不知道是不是稳定版本, 点一下看看,如果不是稳定版本的话,还最好不要用啊。点开 好这个软件,下载镜像 发布包哈,二金制发布包,还有源代码,唐店的他也是免费开源的,都可以跟踪到这个。呃,内部去到内部去,其实就是一个 什么烧铁的啊,就是一个服务提档套节字啊,我们浏览器的话是客户端套节字吧,只不过现在不需要我们写的,不需要我们写罢了。 好,然后九点零,里程碑二十六,这个还不是稳定版本,所以最好不要下, 不要用最新的。这个地方 m 二六的话 m 往往叫就是里程碑的意思啊,里程碑的啊,这个意思。里程碑的话表示现在还不是稳定版本,现在还在逐步的 更新的,所以现在你下的话可能有一些问题你发现了,结果你没能解决的了,只有他们公司的程序员看看后续有时间能不能解决, 所以这个的话我们最好不要充当这一个小白鼠,是吧?用稳定版本出了问题,你到互联网上百度上面可以找到别人有解决方案的,对吧?别人用过的稳定版,何况有一些问题官方就已经发现了,对吧?所以还是选择坦克的吧。坦克的吧, 常见的八的话,这个看看,八点,五点,二点后面没写这个 m 什么之类的,往往这个可以认为是一个稳定版本,所以我下的就是这一个。等下下的话呢,你可以把下载 这个啊,这 ip 格式的啊,他点击这一格式的,他不同的格式不带一样啊,不带一样就安装方式不一样,然后我们可以看看这 ip 格式的核心,这批格式,还有带文档的,我们有核心就行了。 点击这个 vip 格式,这个他点击这往往是。另一个是 unic, 是苹果机上面用的啊,就是 unic 系列的,因为苹果机其实也是一种 unix 啊,对吧。另一个是 unix 系列的,好下载 哦,这个九点五兆,应该还要安装的时候再再去下载踏顶机,这个也可以哦,这个有六十四位的 win windows vip 啊,就不要下载。这个好,这个可以不用 样 啊,这个可以取消。这上面下面有啊,我看到了一个六十四位的 windows zip。 六十四位的啊,下面这个 windows 设为是因此到的话,这个相当于是 windows 下面有一个安装的这个工具包,双击打开安装的时候他再去自动去下载啊,我们就用这个六十四位的 windows vip, 那么应该这个解压就可以运行,那就最好的啊,解压就可以运行,那就是属绿色版本啊,加瓦相关的软件的话,基本上都是这个绿色版本的,用 解压就可以用就好了。哎,这个好像也十点五 k 啊。十点五兆也不大啊,我看看我这里安装的团盖的,八点五 点六啊,四十十多兆。十多兆可以啊,就是这个啊,就是这个下载过来,这里下载的比较慢啊, 还挺慢的,才十多二十兆。怎么搞的今天这么慢 啊,十多二十 k 啊,才造起来。好,不管他,让他好在那个地方下载,我把我这个好 copy 过来。绿色软件啊,你直接 copy 过去就可以用了。我把它放到这个加我外婆视频给目录下面。好,大伙可以直接考过去,十多兆, 我这个下的还是更新一点的版本,八点五点六。好,把这个考过去,整个文件夹考过去就行了,这个文件夹 好,把它考过去。考过去之后呢,接下来我们可以看看配置和配置 好,就是在窗口首选项 window 或者 finance, 打开之后找到这个,下面一个 several 就是福气吧,福气下面有一个运行时环境,然后这里可以添加 删除编辑服务器运行环境,我们这个 java rap 应用,那么必须要有一个服务器吧。好,我们把我们自己写的 java rap 组件扔到服务器上面,不使到服务器上面就可以用啊。 好,这里现在没有一个服务器环境,可以添加一个吧。 a d d a d d a, d d, 你就要根据你用的服务器是哪一个来选择吧,这里可以支持的,大量的服务器都可以支持啊。啊,我们啊用这个市场份额最高的阿发奇汤 cat, 那这里的话就根据你的版本来选择哪一个吧,我们最好是用八点五,虽然现在支持九点零,但是啊,阿发奇网站上面看到唐哥的九点零,他还是里程碑版本,不是稳定版本,不是稳定版本 的话,那可能出现了问题啊,可能没多少人能够解决啊。好,这时候的话啊, bug 你自己搞定,那就麻烦了,所以选择八点五版本,好,把它扣笔过去啊,把这个阿法写八点五点六,然后好下一步, 下一步的话一个就是这个名字,就是刚才这个地方出现的名字吧,名字你可以设置一下,好,就保持这个默认的默认,然后这个地方的话就是你的,你拷贝过去的,我这个目录在哪个地方?我是在地盘吧,地盘下面, 然后下面这个 g r e 的话,就是加瓦运行环境,因为唐太太的话它需要什么?需要我们 g r e 加瓦运行环境,我们前面安装 g d k 配置的时候,有一个加瓦下划线 home 吧,这环境电量好,这时候如果单独用的话,不是通过这个工具来用它捏的,这时候我们需要配置加瓦下划线 home 啊,如果没有配置话,通过这个工具用的话,这个地方也要指定,也可以指定你像我们这个 jdk 一点八。好,这个是我们安装的 jdk 吧,好,选中他啊,也可以分离去。完成,这样的话这个地方 就出来了,这个服务器基本上就已经配置好了,在工具当中已经配置好了,就是这个工具可以用这个服务器啊,可以用这个服务器。 好,那么把这一个打开,那么接住下面的话呢?其实这个地方 severs 下 就会出现这个福气吧,看到没有?左边这个地方,前面这几个项目我们可以删除了,可以删除对面的删除。 好,这里面 severs 就是服务器吧,这里面只有一个吧啊,他这里面可以配置多个服务器啊,然后这里面的话就是里面的相关配置信息啊,相关配置信息。 好,这些配置信息的话,后面可能我们会去配置像这个服务器上面的用户。 好,这个后面我们会用到做配置的时候,配置角色用户权限,然后这个 severed xml, 那么这个的话就是我们弹开的像他监听的东口, 他默认端口是八零八零端口,搜索一下看看到这个地方好,这里面他通过这个 xml 作为配置文件啊,作为配置文件,然后的话, 好,原先是用 proportition 文件,后来改成了用 x metal, 这里面这个 connector 就是一个连接器, 连接器的话,说白了就是他在哪个地方进行好连接,进行等待客户端的连接,在哪个地方进行倾听,这里的话指定了一个端口号,这里默认端口号就是八零八零, 所以说我们向这个唐盖的发请求的时候,是向这个八零八零东口发请求的是这个地方,当然这个八零八零 往往是用来做测试的,到后面的话,真正部署到互联网上的服务器上面的时候,往往最后需要把它改成八零端口, 这个就是 http 协议的默认端口是八零啊, tongata 里面用八零八零啊,就是以免跟好八零端口冲突,你像阿发起运行的话,他默能的端口号就是八零端口,说阿发起运行的话, tonkat 再去运行,如果还是八零端口运行的话,就会冲突啊,端口冲突, 所以这个地方八零八零,我们自己写的程序就不要在这个端口鉴定,因为往往他就是被汤汤盖盖所占用啊,是这样的好,因此你要改的话可以改这个 seven 什么的配置文件,好,这个可以不用管,他都不用管好,实际上是在硬盘上面,这个配置文件有啊,在硬盘 地盘这里面有个咖啡格目录,阿萨奇的这个,下面这个汤盖牌,这个咖啡格目录,配置目录,这里面就有这个三个点,怎么样可以在里面做配置啊?在里面做配置好, 那么接下来的话呢?好,我们来看看现在这个 sever 配置好了,配置好了之后呢?好,我们可以 好写这个外部应用程序啊。写外部应用程序好,看看拍照好没有 啊? 你这个不是交了一百元重新下载,也是加了版本的啊,大伙就是这个工具是加了版本的啊, 好,是加瓦一版本,大家要重新下载一个加瓦一一版本看看,大伙看看,这里是上面是加瓦一一啊, 我看到你们大伙都是加瓦啊,也就是下载一个不死的时候呢。你下载的不是这个加瓦一版本,我现在给大家共享一下这个版本,这也是绿色软件,有的是加瓦一,有的是加瓦, 所以这个地方的话呢,好,看看地盘软件下面我共享一下, 我原先记得放了上去啊,嘉娃版视频是嘉娃版本要,要的是嘉娃一一版本啊, 那软件没放上去吗?就把我这个立旁软件这个 elips 共享一下, 这汤盖的也有,我就把我用的这个 copy 过去, 这个后来又下了很多差劲,所以说就挺大的。挺大 哎,没考过来吗?啊?没考完怎么取消了?删掉重新我共享啊,共享就行, 因为挺大,我都没多少空间了。

现在你选好 gdk, 点击下一步,来到这个界面,我们给项目起一个名字,叫做 boxx 零一, 你可以点击这里更改项目的存储路径。 这里要格外注意,当你修改存轴路径之后,你会遇到挨裂的一个小 bug。 项目名称跟路径不会再自动同步,这个时候需要你手动来填写,才能确保他创建出正确的文件夹。 这个地方是关于详细的设置,初学者如果不想看的话,可以跳过这一小段 id。 这个工具管理项 的方式跟麦克力并不一致,传统开发工具通常会有一个工作空间的概念,里面会有若干的项目,你可以同时打开并查看他们。但是在 id 里面没有工作空间的概念,每次你只能打开一个项目, 但在同一个项目下,你可以创建多个模块。这样的设计方式对于那种大型的分布式项目是非常有利的。虽然我们目前还没有这样的需求,也不会用到多个模块,但 id 会默认帮我们创建第一个模块。 你可以看到这里就是我们模块的名称,但模块理论上只是项目的一部分,所以这个名称其实不太合理。我们可以更改一下这个模块的名字,管他叫做魔九零一。 点击分类时,我们就完成创建好了我们的第一个项目。这里 提示我文件夹并不存在,是否要创建。点击 现在进入到我们的第一个项目,找到这里有一个 s r c 的目录,我们在这里点右键新建一个加号文件,取名字叫 fast。 由于加二是一门标准的面向对象的编程语言,因此他这些奇怪的语法全都是基于面 面向对象的词方式设计。我会在下节课详细的跟你讲什么是面向对象。你可以把这个例子先抄一遍,提前熟悉一下语法。接下来我们来执行这个程序,点右键选择软。 好了,现在你可以在这个叫做控制台的区域看到这里输出了一行字。现在你大概应该能猜的到这一行代码的作用是什么,就是向我们的控制台输出指定的内容, 现在你可以自行修改这两个双引号之间的内容,来反复测试一下这个小例子。好,这一小节的课我们就先讲到这下节再见。