00:00
我们看一下我们这个employee action,目前这个代码我们还是比较满意的是吧,这个代码还是挺少的,为什么呀,因为我们用了一个model drive model drive截器的工作,同时的话呢,我这个action需要实现model drive拦截器这个接口,整个源码的话呢,我们上午都分析了,今天下午呢,我们现在完成第一个功能叫实际上就剩一个功能了是吧?修改,修改的话呢,需要分为两个步骤吧,点一个I,我需要上一个页面上显示那个表单吧,然后我再改,所以说修改的话呢,需要分需要分为两步,第一个就是在一个表单里边回显这个员工的详细信息,那个ID怎么办?ID隐藏域吧,必须得有吧,没有ID的话,那我改谁呀,然后完我再点这个萨米修改好了,那看看吧,我们首先搞这么一个页面出来。
01:12
e.JSP。首先加入抓兔等。热酷。然后这个写法呢,跟这个添加这个表单句差不多吧,差了个什么呀。就差了一个ID吧,ID是那个隐藏域呗,CTRLC过来。S employee ID了,然后的话呢,我一点应该是一个修改操作。
02:16
那第一个问题是,我得先来这个页面吧,你给我回显上吧。是吧,OK,那我们考虑一下吧,到这个里边去改这个ID的这个超链接跟这个类似。C就叫I。是这些吧,OK,然后的话呢,我需要来写这个艾迪的方法。对确一个I保存,看一下配置文件I这个是EP没问题,好了回来怎么回写呢。
03:19
怎么回血呢?我们在讲那表达方销的时候,我们讲过这个问题是吧?怎么回血啊,我只要保证在直站的站顶有一个对应的对象,那个对象的属性跟表单那个属性一一对应的话,我是不会自动的附上啊,OK,回写咱写写哈。第一步,我需要获取。环入党。Employee ad。第二步。根据employee ID把获取。
04:02
嗯。以去向第三步。啊,把淡定那个对象的属性搭配好。那就这么几步就可以了啊,第一个他说这个ID在哪儿呢。我们是不是用modern driver了呀?在哪呢?我到这个方法的时候,在那个占顶的是哪个对象啊,是这个action还是这个employee employee吧,所以说这应该是叫employee.get employee ID吧,OK,那第二个简单了。获取这个employee employee。我写一个emp等于do employee。
05:02
Employee get employee,好了好了,嗯。说把淡定对象的属性装配好,需要明确一下呀。此时案顶对象是是谁呀?是不是employee啊,那我现在这个employee长什么样啊。就是说哎,我获取完,我现在这英长什么样啊。往后翻往后翻,我是不是才new的呀,是不是才new的呀,然后的话呢,到这个之前我要那个power拦截器,给我复个值吧,此外发现没有吧,OK,目前。Employee对象只有employee ID属性,其他属性为。
06:10
那就这样吧,赋值吧,Employee set。Email ep.get email employee set。First name in p.get employee site in。1.getup完。好了问好了,到这块的话呢,应该可以运行了试试。走。我为了看到这个效果呢,这个页面我打一个s debug s8。过来我点一个edit,先刷新一下哈,点一个。
07:06
是不是显示了回起来了,OK,看站点对像是employee吧,IDBB啊,Email都没问题。回家了。然后呢,我们看一下这个源代码。还想看看什么呀,是不是想看那个ID是不是回血了,Hidden回写了吧,哎,没问题,这就是我们整个回显的这个过程。好了,我们再回到我们这个employee action,大家再看一下这个方法啊,有没有什么问题?首先我们需要明确,我到这个方法之前,在直站占顶的是我get model这块新创建的employ对象这个理解吧,然后呢,到这个之前我需要经过一系列的拦截器吧,其中power拦截器会把这个传入这个employee ID付给。
08:27
占顶employee的这个employee ID这个属性吧,所以说我可以获取这个清楚吧,OK,然后的话呢,哎,我获取这个值,我得到了这个employee,然后把这个值一个一个附上过去,进而可以回线,因为我现在的话,这个家伙是不是在值站的站顶啊。所以说这块的话呢,我们再说一个,我们前面强调过哈,我们这块我们再说一个。做一个这样的一件事。不。干。搅拌。
09:01
X8兔小丹。回显十我前面讲过啊,想抓to表达标签的时候就讲过这个事,表达回显出它怎么回显呢?从。直弹。淡定。开始查找。匹配的属性找到。就添加到Y属性中。哎,这个我们是知道的,所以说的话呢,我可以这样改,我们先来看一下这个的流程。这个图呢,在这儿呢。
10:00
首先在客户端发了一个请求,发给谁了?发给这个怎么有点模糊?好了,发给这个employee。然后带了一个参数好了,这个时候我这个请求一开始的话会先怎么样,我目前知道的会先到这个drive吧,对吧,OK model drive,它会把这个at model方法,这个返回值,这个employee放到质量的占顶吧,哎,这里边是有那个employ e ID的吧,哎,下一步。拦截器,这个拦截器就将会把这个请求参数赋给占顶对象它的那个employee ID属性吧。啊,指此时占领对象的是employee赋值的话呢,就付给了他的这个属性,所以说这个时候啊,这个set方法呀,是这个employee对象的set方法搞清楚好了。
11:16
给他下一步的话呢,来到了我们的艾艾里边有两个步骤,第一个获取了。EP对象数据库里边取的,然后呢,我把这个emp对象的属性一个一个的付给占顶对象对应的属性好了,这个时候占顶对象是还是这个employee吧,好了,然后完了我这么。转发来到这个页面就回显了,大家看一看有没有问题。好啦。
12:01
大家有什么问题吗?代码到这块儿,你会有什么想法没有?会有吗?嗯,啊,这个说的真好是吧。啊,我这块我是不是直接获取一个呀,是吧,我直接获取这个,我直接获取这个给employee不就行了吗。啊,我现在这个OK,没问题吧,这是个前提哈,这个懂吧,好了,那于是的话,同学说我这么干费这个劲呢。嗯,那可这个了是吧,这么写我这employee等于。do.get employee employee get employee这么写。行不行?
13:01
我直接把获取这个值就给这个employee呗。行吗?行不行啊。试试哈,我刷新就可以了,是不是没醒啊,占顶的音葡抛这都是空的呀,没行。没行。为啥没醒来?哎,这个挺关键的,就是本来想的挺好,但没行,OK,我们来看一个图,这个流程图啊,是这样的。我们有个get model啊,有一个返回值叫employee,这一执行完的话,的确是占领对象,跟这个employee指向的的确都是这个employee对象就新创建这个。
14:05
只能是同一个好了,然后的话呢,我们写了一步,我们写了个什么呀啊,我说我这个employee啊,等于了一个新的对象,于是看是不是指向他了呀,这就断了。是,那你这个对象的确是从数据库获取,那个你也能打出来,但是他跟这个占领对象是不是一毛钱关系都没有啊,他不行,所以说这么干不行。好吧,没行,没行的话怎么办呢?这块这个我们刚才已经打印了哈,没形的话,那同学说老师说没形,我就像以前那么找呗,像以前这么的话是不是有点麻烦呢?你能不能想到我们会不会有更好的方案呢?
15:02
嗯,同学想的办法呢,是这样的,说我这块我获取这个对象,我直接给它压到直任的站顶是不是就可以了呀,哎,我们试一下哈,就这一步啊,就不靠谱了,这我们已经知道了,说这几个注释吧,说不能够这个,呃,进行表单的回。因为什么呢?因为此时经过同心。赋值的employee对象已经不再是占顶就像了,不行,于是呢,哎,同学想了一个招。说这么的。直接action contact at直接写。
16:08
啊。这样是吧。保存。好,调一调行不行?直接刷新就可以了,是不是可以呀?右见原文。看那个隐藏玉。是不是也有啊,哎,挺好,但是这样式的哈,你把这个bug打开。大家看一下,我在这个直占第一个是音employ,第二个是不是还是音employ啊,有浪费之嫌吧。
17:02
最好是就一个音employ音,而且我把这个ID还放好了,同学又说了,那还不容易吗?我把那个先给它干掉,把这个再加进来就完了呗,反正我们知道直干,我们知道原理,嗯,但是呢,实际上呢,我们不用手工这样干,Stra已经帮我们把这个事干好了,抓图怎么干的呢?这个思维啊,它是这样的一个这个逻辑思维方式,这个注式我写一下啊,手工。手动的把从数据库中获取的employee对象放到直站的站点可型号。但此时直站。判定,即。
18:00
第二个对象均为。你不到对象这样,哎,太好是吧,不够完美。好,那么有没有更好的方式呢?更好的方式就是这样往下翻,大家看我如果要是能在盖子model这块我来判断一下。我是一个新建的状态,还是一个修改的状态,是不是就好了呀,就是说我这块你不要把这个对象放到量的占顶吗?那我就判断一下,我这个是要新建一个employee,还是干脆从数据库里边拿一个employee不就可以了吗?怎么做呢?哎,这样做说呀。判断。是。
19:01
我们这个时候的话呢,一共是两个时刻需要用到这个,一个是新建。Bridge。还是还有一个是I说。若为,则new。Employee。这么说吧,是这样。再来。若为,则。怎么了呢?数据库来获取。等于doo点。Employee,哎,那这样就可以了,那就省事啊。但是这样写的话呢,有一个问题,就是我怎么来判断是create还是I呀,目前这个情况。
20:08
通过什么呀,通过ID吧,没有ID我就认为它是create,有ID我就认为它是判定标准。喂。是否有?译ID这个请求参数若,若有该参数。了志伟。Edit。弱啊,没有参数。则视为不了,那就是意味着什么呀,你要通过这样的方式方式判断的话呢,这意味着是通过。
21:16
Employee ID来判断。则需要在。Model。Drive拦截器之前先执行一个什么拦截器啊,跳出那个我过来吧,先执行一个二姆斯拦截器这个意思。不好判断呢,如果你要没有没有派出拦截器,不把这个值付回来,我怎么判断呢?于是的话呢,我们来看一下。Stra default在这儿呢?
22:01
打开大家看默认的文基站。Model drive。Model之前是不是没有S,没有吧,我想判断的话,我根据ID判断,你得给我传进来呀,你不传进来我怎么判断呢?那于是意味着。这个拦截气站吧,不能用了,往前翻,Stra给我们准备了一个拦截气站,叫什么呀?叫s prepareems sta,大家看这EMS吧,Model drive吧,然后是EMS吧,Model drive之前有一个harms,这个时候我就可以判断了。好了,诶过来耳的可以通过使用拦截。
23:06
器实线好了意味着什么呢?这意味着我们先需要配置一下使用这个拦这个拦截气站作为默认的拦截拦截器,通过使用这个拦截气站啊。在需要在点XL文件中配置。使用它作为默认的拦截器,站作为默认的拦截器,哎,行了,搭配啊。首先找到这个里边来。Copy这个特点是先powers,在model drive,再等于是配置一下吧,找到struts default。
24:07
说。文件不是报的啊。默认的拦截器指向。啊。配置使用这个作为默认的拦截器O了,写完意味着先会来判断一下好了,那这个ID呢,是一个特殊的属性,我干脆在我的这个action里边写这么一个属性。Employee ID employee ID方法写完。点完之后,因为它先会赋值,所以说我可以判断啦,If。
25:05
Employee ID等于空的时候。可不就这样吗?Employee等于ao.employee ad。O了,而且上边我用到employee ID的地儿还有哪啊,是不是要删除啊,直接写了employee ID。废物,这个不用管I底的,你看这样写完之后是个什么情况。I里边一行代码一行代码,你没有吧,都注释好了,保存找一个。再看。先回。刷新list是OK的,好了,删除OK吧,OK,好了,回显。
26:08
回想了吧,右键原文件走看。回血了吧,OK,这个时候代码的话呢,比以前变得更加的干净,哎,我们使用了一个拦截气站叫。S prepare stack,看一下流程,这个流程呢是这样的。这个特点就是先有一个S,然后是model drive,然后又是走。还是发一个请求还是吗?二姆斯要干什么呀?他先会为当前这个时候是不是还没掉这个摩头拽va呢?这个时候占领的是action吧,所以说他先会把这个ID付给当前action的employee ID属性好了,然后model drive。
27:15
这个时候干什么呀,这个时候我这ID是不是有值了呀,ID有值我一判断哦,ID有值,于是怎么样,我出据玩获取的吧,那我这个盖茨矛头我一返回的话,这个家伙是不是在直弹的占顶啊。然后就是后边的回写了。就是跟我们刚才是一个步骤了,完了好了,这就是我们的s prepare sta,这个prepare我们一会再说哈,叫拦截器好,回来你再看这个时候这个代码怎么了,非常的干净,当然我们这个里边这个特点是什么呀?有很多注释,有很多注释让我们挺不爽的是吧,你看这个时候get model里边,哎,我判断了一下,往上翻set有个方法,就是request需要注入哈list一行代码。
28:15
Delete一行代码,保存一行代码吧,这个不算。I,是不是没有代码呀?还有一个写上吧,Update。看什么呀,Exercise吧,我得改完之后我就能看到我改的东西是什么呀,Update就是改,所以说我们直接调DAO的update方法。employee就。可以了,找一个。
29:01
行。行。行。是不是改了呀,最大化删一个没问题。改一个。没问题,下一个。没问题,这块的话呢,我们这个就写完了,然后我们需要关注的是这个action,哎,同样是完成正常改查,你这个要是把这个注释去一去的话,这个代码是不是巨爽啊,这就是死猪啊吐给我们带来的好处。当然还没完,目前还目前这个代码还有问题,这是我们下节课要说的,但暂时我们可以先好好的享受一会儿发过去大家看一下。
我来说两句