00:00
好,那下面呢,我们就来创建一个工程啊,然后呢,把我们当前咱们的rest,然后来实现一下。它当然呢,这里面他也是有一些问题的,就比如说我们现在要来表示对资源不同的操作方式,我们要用get post put delete,然后这些请求方式,但是我们目前咱们从浏览器能发送的请求啊,记好只有get跟post。那这个put跟delete的请求方式我们该如何发送呢?那咱们在这来重新创建一个工程next,然后这个叫做spring_MVC_rest。好,咱们先来解决这个请求方式的问题,然后咱们再来实现一个增删改查的效果啊,好,com.at硅谷点击finish,然后我们来找到咱们的hello word这个工程,然后把咱们的依赖和咱们的打包方式呢都复制过来。好,然后再来把咱们当前ma本工程的web模块给它添加上啊,大家注意在这个位置对吧,找到web,然后咱们来创建一个web点叉L,这是src斜线,慢斜线,好,然后是外部APP斜线,OK啊。
01:11
好,点击apply,然后点击OK,好,那我们当前咱们的工程呢,就已经创建出来了,那下面呢,我们是不是就可以来进行一个配置了,怎么配置啊,咱们是不是先配置咱们的web点叉L对吧?然后比如说那我们如果说需要用到这个过滤器的话,大家就把这个过滤器呢给设置上,如果说你不需要用到的,那你就。不设置,但是咱们现在设置的过滤器是处理咱们的这个获取请求参数的乱码问题的,对吧,这个肯定是要设置的啊,哎,Filter,来file filter,然后先来写filter class,叫做character including future,哎。好,然后下面我们是不是要来设置两个初始化参数,大家还有印象吧,第一个叫做encod,叫encoding,然后是UTF杠八,那如果大家要怕写错的话,大家把这个给打开,然后你去找谁啊,咱们直接来找到我们当前咱们的这两个,大家注意啊,找到这个有参构造咱们需要来设置的两个初始化参数。
02:14
然后一个就是他,一个就是他OK吧,行啊,如果说你怕写错了,咱们就在这里面去复制就行。好,叫做for encoding,在这儿咱们把它给设置为true。然后再往下,咱们来设置future mapping对吧?Charcoding,然后URL pattern杠清啊行,然后呢,我们来看这东西是干什么的,然后来设置啊,然后设置咱们spring的编码过滤器,编码过滤器OK啊,行,然后下面呢,我们是不是要来设置咱们spring VC的一个前端控制器了,对不对?来设置spring mvc的前端控制器,OK,然后是sol标签,然后咱们这个就叫做spring mvc,然后solve that class叫做dispat solve that。
03:05
好,然后再往下,咱们需要设置初始化参数,大家记得干嘛的,不是不是来为spring VC来配置自定义的,它的配置文件,来配置自定义的位置和名称,对吧?那咱们就叫做spring mvc,然后点叉ML,好,然后再往下,咱们还需要设置一个load on up对不对?然后这个大家注意这是干嘛的,将前端控制器的初始化时间提前到服务器启动时,好再设置solve let mapping,然后SPAVC斜线就可以了啊。好,那下面呢,我们就来创建它的配置文件,叫做spring VC的XL,或者说大家直接把它复制过来也是没问题的,因为这里面咱们目前没有去写一些其他的内容,对吧?大家呢,也可以把它直接当做是一个模板,直接复制过来就行啊好,那我们需要干什么?首先那我们在这咱们要扫描组件,那我们是不是就要把咱们控制层的包给创建出来,另一个class叫做com.at,硅谷,然后点con control,那我们这个咱们就叫做rest con。
04:12
啊,算了,咱们这样啊,叫做test rest control。这个为什么我把名字给改了啊,大家注意,那是因为我们当前咱们有个注解,它就叫rest controller,知道吧,有个注解就叫这个东西啊,然后所以说呢,咱们在这最好啊,咱们是给它换个名字吧,咱们叫test rest controller啊,来加上一个注解叫controller,那个注解是干啥的呢?然后咱们等到讲到处理阿贾克斯请求的时候,咱们会跟大家说啊。好,那控制层咱们现在创建完了对吧?然后呢,我们现在呢,咱们是不是这个除了配置的有我们的控制层组这个扫描组件之外,然后我们下面是不是还有这个视图解析器,那它所解析的视图是不是应该是在咱们的web in four,然后下面的什么template这个目录下,对吧?然后呢,我们是不是也可以在这来创建咱们的第一个页面,就是咱们的首页对吧?然后这是首页,然后这个是H1,然后index.html就可以啊。
05:20
好行,那大家说我们第一个要实现的功能,那不就是访问上下文路径,然后来访问咱们的这个inex的HTML吗?对不对,那怎么去写啊,这是咱们的配置文件对不对?咱大家记不记得咱们之前是不是讲过一个叫做什么叫做视图控制器,叫视图控制器对不对?然后是什么标签,MVC冒号叫做view controller标签,然后我们当前访问的路径是斜线,然后我们当前的视图名称直接设置为index,大家说这是不是就可以直接干什么,这是不是就可以直接来访问到咱们的首页呀?当然如果你要配置视图控制器,那我们当前咱们是不是就得干嘛,咱们其他的请求是不是全部都访问不到了,对不对?所以说在这咱们还要来开启叫做MVC的注解驱动,OK,然后是什么标签MVC冒号oration OK啊。
06:21
行,那我们现在咱们的配置呢,就已经配置完了,对吧,然后我们现在咱们需要做什么来给大家来演示我们当前咱们的restful的功能,然后来演示我们restful rest风格里面咱们的路径,以及咱们的各种请求方式,好,那我在这呢,把咱们的Su success也创建出来,如果说我们现在咱们处理完请求之后,咱们就让它往这跳,Su ss.hgok啊。行,那我们来找到咱们的控制层,比如说咱们在这先把我们当前咱们的功能列表呢来写一下,比如说我要来访问的就是我们当前的用户资源,能听懂吧,我们当前要来访问的是咱们的用户资源,所以说咱们的路径大家注意统一都是谁,都是user。
07:11
统一都是user OK吧,那我们现在一套完整的增删改查,咱们应该是有几个功能啊,五个功能对吧,分别是什么?查询所有用户信息,根据ID查询某个用户信息,添加用户,删除用户,修改用户对不对?那咱们就把咱们现在操作的用户这个资源,它的路径和请求方式列出来啊,然后咱们下面一个一个的进行一个测试,首先大家注意。啊,比如说我们当前访问的资源是用户,那我们在服务器中表示用户资源的名词,咱们就给它设置为U,那我们现在要来实现什么功能,大家注意啊,你看我现在要实现查询所有的用户信息,好,大家看怎么写啊,这是路径,然后咱们的请求方式应该是什么?Get请求。
08:01
OK吧,复制,然后咱们现在是根据ID,然后来查询用户信息,对吧?那大家说我们是不是也要把咱们传输过来的ID作为路径的一部分,对不对,所以说在这斜线一能看懂吗?请求方式也是谁也是get有的老师这俩路径它不一样吗?它不一样啊,你这个路径是一层,这个路径是两层对吧?咱们说了你这个地方是把它当成什么,当成路径的一部分传输到服务器中的,所以说我们现在大家看你这个路径是两层路径,而这个路径只有一层,它俩是不一样的,知道不?啊是啊,好,下面那我们现在要来添加,要来添加用户信息,有新增用户信息怎么办?对吧,新增用户信息。请求方式写成什么?写成post?对吧,Get查询嘛,Post添加,然后put修改比例的删除嘛,对不对,好那有存老师,那我们在这,咱们不需要把那些数据什么ID,然后什么用户名呃me,然后密码123456,不需要把这些东西传过来吗?不需要啊。
09:15
大家看我们现在如果你要是来传输一个数据,两个数据,那没问题,那我们完全可以把它给拼接在咱们当前的这个地,把它给拼接在咱们的请求地址中,对不对,作为地址的一部分,但是我们现在咱们的添加功能也好,咱们的修改功能也好,我们从页面中所获取的数据都是一个表单中的数据非常的多。对不对,那这个时候大家说我们有没有必要专门把这些所有的数据都拼接,都拼在我们当前的地址中啊,有没有必要,没有必要对吧,咱们只是说我们传输数据的时候,你可以这样去传,但是我们没有说你必须要这样去传,因为rest是一种风格。对不对,所以说如果咱们的数据比较多的话,我们还是可以通过表单提交的方式来提交啊。
10:03
是不是通过表单提交的方式将这些数据传输到咱们的服务器中,能听懂吧,这样的啊,所以说咱们没有必要说们咱们所传输的所有数据都要拼在地址中吗?不是啊,好,下面呢,我们再来看咱们的叫做修改,叫做修改用户信息,然后咱们在这的请求方式应该是put,然后咱们再来看我们当前的删除用户信息,那咱们的请求方式大家看这这是不是应该要加上一个什么,加上一个一,因为咱们要根据ID来删除用户信息,对不对,然后这个请求方式咱们给它设置为delete就行啊。好,大家看这就是我们的功能列表,好然后下面呢,我们就可以把我们当前咱们的这两个查询来写一下,OK吧,按两个查询写一下,比如说我们来找到咱们的首页,然后这个首页中咱们写个超链接,大家看这是TH冒号啊TH冒号好,然后这个路径咱们设置为什么看好就叫user。
11:06
能看懂吧,好,然后我们这个是什么功能,叫做查询所有的用户信息,OK,大家注意,这是我们当前的第一个功能啊,好,然后这个东西该怎么去写呢?咱们先把这两个查询咱们写出来,OK吧,根据ID来查询某个用户信息,然后来查询所有的用户信息,然后我们现在咱们把不用的东西都给它干掉,然后来找到我们当前的控制层,那我们需要第一个处理的请求,大家看request mapping括号,然后在这写一个斜线,这是我们的路径,对吧?那大家说我们现在要来表,在rest风格中,我们要来表示一个路径的话,我们是不是既要通过路径来表示我们要访问的资源,我们还要通过我们当前的请求方式来表示我们对资源的操作方式对不对?所以说我们现在只需要设置一个value吗?不是,大家注意我们在这还需要再设置一个method来表示我们当前这个请求。
12:07
个请求映射所能处理的请求,所对应的请求方式叫什么?Request method.get这个大家看好啊,请public,然后返回一个字符串,然后我们现在咱们叫什么?叫做get or u,大家注意,这个就是来获取所有的用户信息,然后咱们可以来一个输出,So,这是啥功能,来把它复制过来放到这,然后我们在这再一个return,然后直接跳转到sus行,大家注意啊,就这样。好,这是我们当前的第一个案例啊,然后我们可以把它给添加到咱们的tomcat中,把它删掉,然后咱们在这再来添加一个新的啊,叫做spring VC_rest,点击OK,然后上下文路径的话,咱们就给它写的简单一些,就叫做spring VC,然后这个地方咱们要选择第三个重新部署,这也是第三个更新类和资源,好,咱们来重新启动一下Tom cat,大家注意啊,所以说你像咱们的get呀,跟咱们的这个post其实还是比较简单的,但是呢,这里面最重要的问题就是你该如何去发送一个post请求和delete请求,这是一个问题啊。
13:23
因为咱们现在的浏览器,它只能发送get跟post OK吧,好。好,OK,大家看,那我们当前咱们的首页对吧,然后咱们就已经访问进来了,大家知道怎么访问的首页吗?我是不是并没有在我们的控制层里面来写个控制器方法对吧?然后来设置它的请求路径是斜线,然后它的这个视图名称逻辑视图叫index,咱们在哪写的,在咱们的配置文件里面设置的啊,咱们设置了一个视图控制器,当访问首页的时候,那我们直接来访问index.htmlok吧,行好,然后那我们现在咱们这样,我点击之后,大家看你看它没有问题啊,为什么没有问题,因为我们通过超链接,然后发送的请求,它默认就是get请求,然后我们当前的路径也匹配,请求地址也请求,请求路径匹配,请求方式也匹配,那所以说咱们绝对是可以通过这个方法来处理这个请求的,OK吧,行,下面呢,我们再来看咱们的第二个操作啊,大家注意加上一个换行,然后我们现在咱们在这来写个斜线一。
14:34
我要查询D,我要查询ID为D为一的用户信息,大家看啊,好,那我们现在是不是就可以来写这个请求了,怎么写,It request mapping括号,然后斜线叫做user,对吧?然后咱们的路径是不是长这样的,对不对,对吧?然后咱们的请求方式是不是应该是method等于request method.get对吧?因为我们现在这也是要来查询用户信息,那咱们的get请求方式表示的才是查询,对不对?好,下面public,然后返回一个string,然后咱们叫做get user by ID OK,好,那大家来看一下,那我们现在咱们要干嘛?
15:18
大家说你这东西能这样去写吗?其实也可以,你如果要这样去写的话,那我们当前确实可以去匹配到我们当前的控制器方法来处理请求,但是大家要注意,你在这传过来的这是啥请求参数,那我们现在最重要的是不是来获取我们当前的这个请求参数,根据它。然后来查询咱们的用户信息。对吧?所以说我们现在最重要的就是在我们的控制器方法中来获取这个参数啊,那我们之前呢,咱们在讲获这个请求地址中的占位符的时候,咱们说过这个东西它跟我们之前传的不一样,你之前传的时候它有见有值,所以说咱们可以通过见货去值,而这个东西只有值怎么办?那我们就要通过一个大括号来表示一个占位符,然后呢,通过这个占位符来表示我们当前这个位置的值,比如说就是ID,对吧?然后下面咱们怎么写it pass variable。
16:17
然后括号,然后把我们当前占位符中的这个ID,然后赋值给或者说给给咱们当前的这个行参进行绑定就可以啊好,那下面呢,我们怎么做来输出一句话对吧?输出什么把咱们上面这个呢,咱们给它输出来,根据ID来查询咱们的用户信息。能看懂吧,然后这个一咱们把什么给拼上来,大家注意啊,这个一咱们这样,咱们双引号,然后加加,然后把我们当前的ad给它拼进来就可以能看懂不?这个大家注意啊,好,下面呢,我们再来看,咱们在这呢直接来return,然后sus还是往我们成功页面去跳啊好,下面我们再来一个重新部署,大家看这个效果,你看咱们刚才这句话是不是就已经输出了呀,对不对,当然了,这个大家注意,这个咱们其实都能看出来的,对不对啊,还是我们需一会要注意的就是如何来处理put跟delete啊。
17:17
好,我们现在咱们再来一个刷新,返回到咱们的首页,然后我们现在咱们来点击,然后大家看啊,你看咱们在这的一是不是已经获取到了这个,咱们是不是也能够进入到这个方法中啊,对吧?所以说大家看好,咱们是不是就通过同一个请求路径,然后不同的请求方式,对吧?然后来表示了,我们对同一个资源不同的操作方式,OK啊行,那下面呢,我们再来看一下咱们的添加修改,还有删除。
我来说两句