00:00
好,然后那我们把这个hidden http method filter咱们讲完之后啊,那大家现在是不是就知道了,我们web点叉中为什么我们要先来配置编码过滤器,然后再来配置其他的过滤器,我们笔记上有之前跟大家写过对吧,为什么呀,大家想一下。是不是就是因为啊,我们当前咱们的编码过滤器里面来设置了编码,而设置编码之前咱们一定不能获取其他的请求参数,如果你获取了其的请求参数的话,那我们当前咱们的设置编码是不是就没有效果了,而我们当前的hiddenen httb method的filter,然后这里面是不是就是不是就直接给我们获取了一个下划线method的这个请求参数呀,对不对,所以说大家注意这两个的顺序,你一定不能把这个过滤器放在咱们的编码过滤器之前,OK吧,行好,然后下面呢,我们再来看来,咱们下面就来做一个restful的一个案例啊,然后呢,咱们这里面呢,其实这个咱们不需要去访问数据库啊,然后因为我们把咱们的这个DA层啊给大家去写死了,然后大家看一下啊,这是我们当前咱们的实体类啊,咱们直接把它给创建出来吧,来移姆洛对吧,对员工来进行一个增删改查,然后咱们的环境咱们就直接放在我们当前的这个rice。
01:17
的环境中啊,咱把这些东西都给它干掉,然后呢,我们来找到咱们的这个Java,然后来创建一个包,这个包咱们就叫做PU。好,这个类呢,咱们就叫做employee啊,大家直接复制就行啊。这个没有必要再去重新写一遍,我跟大家说过很多次,对吧,因为这个东西啊,咱们也确实是你创建的,跟我创建的它确实是一样的,对不对,所以说大家直接复制过来就行,我们这里面一共有四个属性,第一个叫做ID,第二个叫last name是名字,第三个叫做email邮箱,然后最后一个大家注意这个叫什么,这个叫做金ER性别,然后一来表示男零表示女,OK吧,行,然后再往下,然后我们来看一下咱们的dau,也就是说这里面dau中的数据是直接给我们写死的,大家不需要再重新去连接数据库什么的,咱们主要来测试的是咱们的rest的功能,OK吧,行,大家看啊,你看在这,然后咱们是不是只有一个employee DA啊,就只有这样,就只有这样的一个持久层,咱们也没有接口,直接就是这个实现类啊,直接就是这样的一个类,然后这里面咱们去创建了一个静态的map集合,它的键是in t,它。
02:37
值是employee,好,然后呢,这个我们下面在一个静态代码块里面,然后来为它进行了一个赋值,对吧,然后new哈,Sh map,然后我们往里面去放,值是1001 1002 1003 1004 1005,然后值呢,就是我们的一个员工对象,这个大家能看懂吧,好,这个简单,那下面呢,我们再来看,然后下面咱们在这呢,是不是就看到了一个什么,来创建了一个静态的一个ineg类型的数据,然后叫做in ID从几开始,从1006开始,咱们上面在这是不是就已经到1005了,对不对?好,然后这个是到1006,它设置这个是干什么的?因为我们现在咱们如果要去添加用户信息的话,咱们现在不像是my circleq里面,它的ID可以自动递增。
03:25
那我们是不是一定要给我们当前的员工来设置一个ID,那咱们怎么办?大家看,你看我们这里面设置了一个save方法,这个save方法既可以实现添加,又可以实现修改,为什么?你看如果我们现在咱们从浏览器端传输到服务器,在咱们的controller里面,我们如果所获取的这个员工对象啊,它没有ID,也就是说点get ID横等于空,那说明什么?我们从浏览器中所获取到的employee对象,这是它有ID没有,没有ID没有ID大家说是什么功能,咱们的添加功能里面是没有ID啊,修改里面才有ID对不对?所以说表示这是一个添加功能,然后这个时候他给咱们的员工对象来设置一个ID,谁呀,In ID,然后加加,先赋值再自增。
04:17
能看懂吧,好OK,这个时候它的ID是不是一定跟我们当前咱们的map集合里面的任何一个键都是不一样的。对不对,然后这个时候我们再把这个员工的键,然后员工的ID作为键,把员工对象作为值放在这个map集合中,那大家说这是不是就是一个添加功能啊,对不对?好,那如果我们现在呢,咱们的这个if条件不成立,也就是说我们从浏览器所获取的员工对象里面,它有ID。如果有ID的话,那我们直接来执行的是不是就这样的一句话,对吧,然后咱们是不是以员工的ID作为建,员工对象作为持,那所以大家想想这个时候是不是就是修改功能,对吧?因为你的员工他有ID,那所以说它是修改,那我们现在把这个数据再重新往咱们的map集合里面去添加的时候,那相同的键,不同的值是不是就会将原来的值给覆盖掉,这就是一个修改。
05:14
OK吧,好,这个大家一定要看好啊,然后这个方法既能实现添加,又能实现修改,知道不啊,既能实现添加又能实现修改啊,如果是添加功能,它所设置的ID是咱们的init ID,然后再加加,所以说我们每一次咱们添加的时候,咱们所使用的这个ID,它是不是都是不一样的,对不对?好啊,然后再往下大家看,这是get all来获取我们当前所有的数据,所有的员工信息,这个map集合点values就是来获取咱们map集合的所有的值,所有的值大家看,那不就是咱们的员工所对应的集合吗?是不是?好,再往下,这是get的方法,干啥的呀?来通过ID获取咱们的某一个员工对象,然后这个是删除,通过ID来删除某一个员工信息,大家看,点remove方法,点get方法获取,点remove方法删除。
06:09
OK吧,行,大家注意啊,这个是我们当前咱们的一个DAO,那我们把它也来创建一下。和dao.emlo employ employ DAO,然后咱们把这里面的内容呢,大家注意也是直接复制过来就行,大家不需要自己去写,知道吧,我们现在主要来练习的就是咱们的rest风格啊,好,然后咱们把它复制过来之后,然后咱们的map集合报错了,因为我有自动导包的这个功能,但是在这它没有导,那说明咱们的map它不就有多个嘛,是不是啊,好,Al加enter,然后咱们来选择一个就可以啊好,那这既然是咱们的持久层,那我们是不是在这就可以加上一个it reposity这个注解啊,然后我们把咱们的控制层咱们也创建一下,哎,你有一个class,然后这个叫em control,加上咱们的a controller注解就可以啊行。
07:13
好,那咱们的控制层跟咱们的dau,还有咱们的实体类呢,咱们就已经创建完了,对不对?好,然后呢,下面呢,我们是不是就可以来实现功能了,那下面咱们来看一下咱们的功能清单,首先访问首页咱们已经写过了,然后查询所有数据,然后呢,删除功能,跳转到咱们的添加页面,然后执行保存,跳转到更新数据页面,然后执行更新,对吧?咱们在这儿呢,在我们的控制层里面啊,咱们把这些功能都给它写一下,首先第一个大家注意访问首页已经写过了啊,那我们就来看第一个功能叫查询所有的员工信息。怎么写看好啊,然后首先呢,比如说咱们的路径,咱们的员工信息统一,咱们就叫emlo OK吧,好,然后咱们的请求方式,那肯定就是get了,对不对,你写大写也行,你写小写也行,为什么呢?因为我们当前咱们从request对象中,你所获取的这个请求对象,它默认就是大写知道吧,所以说你在这你写成小写的,它到服务器中也会把它给转换为大写OK吧,行,咱们就要get啊,复制复制复制复制,然后咱们在这儿还有什么。
08:28
啊,咱们在这是不是还有跳转到,比如说咱们这个叫做啊这样写吧,叫做跳转到咱们的添加页面,OK,大家看啊,跳转到添加页面,那大家说你说你这个东西是来访问咱们的员工,员工这个资源吗?是不是不是,那所以这个路径大家就没有必要去写成employee了,对不对,所以说我们在这儿可以怎么写呢?大家注意叫做to,然后斜线ad。能看懂吧,或者说叫做to配,然后斜线ad这样就行,或者说你把它给写成叫做to ad行不行也没问题。
09:07
OK吧,哎,这个大家注意啊,好,那咱们最好还是给它写成是咱们的每一个单词中间,然后用这个斜线进行分隔,好那跳转页面大家说咱们直接get就可以能看懂不行啊好,下面呢,我们再来看,然后咱们是不是可以来添加员工信息,叫做新增吧,新增新增员工信息,添加员工信息都可以啊好,然后咱们的路径还是他,但是咱们的请求方式。POS的,然后再往下跳转到修改页面。好,然后跳转到修改页面,那什么叫跳转修改页面,大家都知道修改功能我们是不是得先干什么,你得先查询出来员工信息,然后再跳转到修改页面,所以说咱们跳转到修改页面,其实就是我们来获取咱们的员工信息,所以说我们在这就可以来使用这个路径,那同时我们是不是也要把员工的ID给传过来,请求方式是get,对不对,好,再往下,然后这个叫做修改员工信息,请求路径是他请求方式是put,好,最后一个咱们叫做删除,叫做删除。
10:20
删除员工信息对吧,然后咱们要把ID传过来,同时咱们的请求方式是比delete。OK,大家注意,这就是我们当前咱们的功能列表能看懂吧,那所以说我们现在咱们是不是就可以来把咱们的每一个功能呢,咱们都实现一下,OK吧,行啊。
我来说两句