00:00
下面我们来看。添加。下面我们来看添加这个功能,那添加的话。先跑到我的index。好,添加我点这个ADD new customer是不是要先给我一个表单呢?我有这个表单之后我才能填,所以说这个的话呢,就直接连到一个JSP就可以了,我们这个流程是这样的,我首先点这个超链接。添加的流程,添加的流程。第一个这是一个超链接。
01:03
超链接连到链接二什么呢?比方说是new customer GP好了,然后呢,根据这个GSP。新建这个GP,这个GP的话并不难写哈,来写它,大家看这个GSP。因为我们呢,这个不够简单,这个这个JSP跟index这个查询这个是一样的,或者几乎是一样的这个样子啊,CTRLC复制过来CTRLV。画我们看一下。这块的话,我们要写成A加一个新的吧,是不是ADD呢?我们得看什么呀,得看一下这个so吧,我那个方法是怎么写方法名,或者还得来改改这个方法吗。
02:12
Customer ctrl c。叫这个时候的话呢,一提交是接到这个方法对吧,好过来,呃,Name address phone没问题,这个不要了,合并单元格。二好啦,我点一个提交。这样的话呢,我这个页面就写完了,看一下。超链接。这个new的保存。
03:06
放心。啊,就来这个页面了,这个页面就说诶长得差不多,的确差不多啊,只不过这个是三米的,这个是query好,我点过来之后的话呢,这个页面的设计到这就结束了,比较简单。就是这个页面的设计下边。这边的话呢,我们需要说,哎,我需要在方法里边,艾卡应该是在。Customer这个方法中。完成以下一些步骤,我们看什么步骤呢?
04:01
一个一个看我这个时候我一点的话,是不是跑这个方法里边来。我们应该怎么写啊?第一步获取表单参数版做什么?Name address还有放第二步呢,把表单单数封装为一个。卡吗?对象吧,叫第三步要用。Eo。啊,什么方法看看结果就可以了。有一个废方法。
05:00
嗯。CTRLC过来。执行保存操作。第四步。重定向到success的JSP页面。那如果不考虑那个名字重复的话,这块就写完了。好,我们看一下它这就C。点这样的一个页面。这个页面的设计的话呢,也相当容易说四操作成功。好了,再来一个。写一个return。返回。
06:02
Eight。A,等于比方说我去的是index JSP,这就可以了,这就是我们对这个页面的设计。好,我们看一下这个页面来。哎,找成这样1RETURN的话,我们就回去,然后再重新查好了,这是我们这个em,如果不考虑名字重复的时候,这个基本的不重。好了,下面的话呢,我们看说如果名字要是重复呢,怎么办呢二。检验name。是否已经被占用,怎么检验?
07:06
2.1调用。DAO啊,什么方法,你看这个时候的话呢,这个接口的作用出来了啊,这个接口你直接看方法就可以,而我不关心这个方法是怎么实现,知不道这个方法呀。CC,我用这个名字啊,是什么去获取啊,Name在数据库中是否存在2.2若若返回值。大于零说明是不是有啊,则响应。想要哪个页面呢?这个时候我需要响应的是义。
08:03
customer.dsp这个页面,而且我需要在这个页面上通知他,告诉什么呀,说啊,这个名字已经被占用了,然后点开,具体看有么有响应呢?我们需要想我是不是需要在request里边放东西,以及我是不是有其他的诉求,有没有其他诉求啊。看看这个来。好了,麦克CTRLC过来。来,我来写东西啊,呃,厦门。13456770099。
09:04
啊,大家看我有没有诉求啊,我有诉求什么诉求啊,第一个你要给我显示一个消息,第二个你要给我保留表单以前的值看看见了吧,哎,我有两个诉求回来回来这个时候的话,去这个页面呢,我们有两个要求是这样的。2.2.1装要求在new.gmp页面。显示一个错误消息,咋写呀,回到这个里边来说用户名什么什么已经被占用了,请重新选择。第一户名应该是什么呀?应该是那个name吧,是吧,好了2.2.2。
10:04
要求什么呢,然后你。Customer。点JSP的。表单值。可以回显这个值啊,还有不能丢,好吧,我一个一个看怎么实现吧,第一个,那我这个消息,这个消息我应该怎么写呀,怎么写呀。交集写的方式是。在request中放入一个属性。比方说像message的这个信息呢,就是他。在页面上。
11:02
在页面上通过什么显示啊,通过request.get tribute。Message对吧,方式来显示,OK,这是一个啊,这是一个这么显示啥意思呢?就是说我如果要是突出的话呢,我这块嗯,往request里边放一个属性,然后在页面上我通过这个来进行显示,这说明我怎么响应啊。大于零,响应说通过转发的方式来响应六。Customer点点于为什么,因为我是不是往铝块里放,然后那边我得取呀。
12:03
必须是嗯,请求这个请求转发的方式来到那个页面,OK好了,那如何来回显呢?如何来回显呢?这个事情呢,也很有意思,我们来模拟一下啊,这个我先这么写,大家看。request.get request,我去的是根目录下的义务。customer.p点写完好了,我们看一下关于回写的问题。页面回来。这个18啊,这个是。我得跑他。我们看一下关于回显的问题。
13:08
好,我刷新来,我写个ABC,好我点提交,我是不又回来了,我点点这个提交又回来的话呢,这个时候我们涉及到。有三个request,那这三个request是不是同一个,我们看啊,在我点这个提交按钮的时候,是一个request吧,是request到哪了。这个request到了这个so吧,啊到这了,所以说的话呢,我可以在这个里边request.get。这个值我是可以取的。保存,然后呢,我是不是通过转发的方式又来了这个页面啊是吧,于是这个页面上面是不是就有一个request,这个request应该跟so里边这个request是一个吧,在哪,就是我最开始发请求的那个request,看ter name,看下个值。
14:25
哎。看着啊,ABC刷新都能获取的话,所以说回显的方式可以这样来写。哎。怎么写呢,这样。F。request.get。OK,看一下我刷新就可以了。
15:03
收回响了,但它有一个缺点,缺点是什么呢?我如果直接用这个页面的话,是不是空了。这个时候我直接请求的呀,他没有,所以说你得怎么写,说判断一下,如果这个值是空的话。那我就显示二,否则我才显示啊。这个值本身CTRLC。比较麻烦哈,后边我们使用EL的话可以直接显示。后边使用EL的话可以直接显示,目前是用这样的办法来写,你看这个时候才过来的话呢,没有毛病,我写个AAA。好吧,可以得到回显,这个就是显的方式。好,我先写一下。通过这样的方式来进行汇钱。
16:05
CTRLC过来怎么回写呢,诶通过。这样的来进行危险。好了,那我要是确实是回显的话,确实是没通过的话,然后也回显了,这个时候怎么了。2.2.3,哎,我应该结束方法直接什么了,对,后边就不执行了,这是我们整个执行的流程,这个改为345保存好,我们回过头来看一下,这里边大家可能会出的一些问题啊,第一个呢,获取请求参数没啥问题,干toter检查这个是不是已经被占用了,怎么检查呢?我调了DAO的这个方法,看一看内部在数据库里边是不是存在,如果返回值大于零的话,说明数据,说明数据包是不是有那个内幕所对应的记录啊,对吧,不行不行,然后的话呢,我需要通过转发响应这个页面,为什么响应是这个页面。
17:26
因为我需要在这个页面给我消息,同时在这个页面还得给我显示以前我输的值,我输的仅是它不合法,这个和这个是合法的吧,你不能说我一回来之后啥也没有了,然后你都让我重新填,那样不好,所以说我们要响应的是这个页面,然后呢,我还要求在这个页面上给我显示一个消息,那这个消息呢,是在我的这个sol里边放里边的,在页面上给我显示出来。
18:01
好了,还有一个表单值的回显问题,怎么回显呢?哎,我通过这样的方式来进行回显,这里边儿有一点,大家可能会有一点,呃,不理解,我们画一个图。我们画一个图是这样的,大家看我这个时候的话呢,实际上啊,我有。一个页面一个是一个对个页面的名叫。Newwork的编辑。好了,诶,我从这块儿的话呢,我要发一个请求出去,注意哈,这个页面,这个页面我本身我要是加载这个页面的话,我们看我本身这个页面进行加载的话,我先发一个请求获取这个页面,这叫加载这个页面。
19:07
加载页面啊,我加载这个页面的话。这个的话呢,就是获取这个页面的话,我也得发,我也得发个请教服务器啊,这页面给我好了,这个时候这是一个请求,这我们都知道好了,这个页面获取完之后的话,这个请求是不是完了呀。对吧,什么意思呢?这个意思我直接获取一下,他这个求完了。请求过去想要回来一次交互完事好了,下一个下一个,在我提交表单的时候,我把主单给谁了?给了这个色叫。Customer,受累好了,注意,这不一样啊,叫我提交表单。
20:04
提交表单,哎,我这么一提表单的话,意味着什么呀,意味着我是不是会有一个。我这么一一提交表单的话,是不是我发了一个新,我发了一个新的请求啊,这个时候我发新的请求的时候,然后的话呢,我意味着我在这里边我可以request中获取表单参数,这是可以获取成功的吧。消息。这我们都知道啊,这个是可以获取成功的,好了,下一步很关键。这个我们都理解。重题打他下一个下一个。啊,提表单一个新的请求,这个时候的话呢,请求就是一个request,下一个什么呢?我通过转发又回来了,看着我通过转发表单转发的方式,我又回来了。
21:24
注意这个哈,叫表单请求转发请求。转发好,我这么一请求转发的话,那于是在这个页面上,我是不是还有一个request呀,那这个request是不是跟我提交那个request是不是一个呀,就是说我请求转发的话,我这里边出什么了啊,我这里边我会传入一个request,这个时候这个request。跟这个是不是一个呀,那于是我这里边我可以来获取表单参数的话,我在这里边我不也可以获取。
22:10
获取的方式是一样的。哎,这里边儿我也可以来获取标杆参数。哎,这就是整个的流程,所以说怎么了,所以说的话呢,这个表单参数我们可以正常的来进行获取,而且把这个参数值还获取到。特别关键的就是我提交,然后这块是一个请求的转发,所以说这个request跟这个request跟这个request是一个,哪个不是一个呀,在你直接请求这个页面加载的时候,那个request是自个的,所以说这块的话呢,我从这里边可以获取表单参数,这个里边我也可以获取到,那于是我就可以通过这样的方式来获取到这个值,好了,这个值获取完之后的话呢,这个值为什么需要这样判断一下呢?因为你直接加载这个页面的话,这个值可能是空,你把这个now显示上总不好吧,所以说这样判断一下,好,这个时候方法结束,如果这个验证要是通过的话说落。
23:24
若验证通过,则进行后面的操作。啊,这就是我们整个添加customer的流程。发给大家,大家结合什么呀,结合我这个是吧,方法中,然后呢按键。看见这个解,大家呢,把这个推荐它把这个完成。
24:03
第一个获取name address phone干密是吧?这块大家会怎么想?他是不是觉得老这么后续的参数挺闹腾的是吧?如果这个参数要是自己能进来该多好?讲过这个事吗?检查是否会占用。如果大于零。
25:19
Set attribute。别的不用这个回显示不是页面上是看是。如果通过的话,不能让一个卡吗。
26:00
没写过号器,很麻烦写一个去啊。二。创建一个,创建一个说话无餐的。最近拿出来了。SS创建一个构造器。ID没有保存到这个里边来,OK,叫DAO执行保存操作。天下。保存看一下。在页面上的话呢,我们需要回写,回写是没写完的哈。
27:04
连着一个CTRLC。对吧。Phone。保存再看。刷新。这个页面上的它单调。对,看刷新。我们写abcd。北京。在初始化附图捏时。
28:02
已经初始化好了,怎么没有反应呢?大家看是不是没有反应啊。这是为啥呀?我们把这个服务器关掉,把这两个移除,移除这个也等一下。Yes。什么情况,这个也移出。对,没事儿啊,然后的话呢,重新发挥一下。这应该是我操作系统的问题,我觉得他就已经没有了,然后他还在那看着好像有似的。Close aid abcd。12345北京。
29:04
13567890000。嗯。OK,好了,我们发现个什么问题啊,这个时候的话呢,我们不知道他进没进去,反正然后这块给我了一个没有响应的页面,我们看一下数据库吧,看一下这个记录是不是进去了。过来,Tablecut打开。Abcd第一把的好像进来了是吧,但是这个响应这个很明显不对,响应这个我们看一下这个时候是什么问题啊,肯定是问题吧,点进来找一下。ADD。哦,这个时候的话呢,我没响应是吧,如果出错的话,响应这个忘写了,响应这样一个页面,这个忘写了response,哦,不是应该是什么呀,转发了是吧?request.get request我去的是根目录下的。
30:25
New。点儿说我别忘写了,刚才啊保存。这个是重定项,点right,我去的是success,点点P保存再看。回退点一下是不回来了,好了,那回来之后的话呢,这个页面上我们应该显示一个显示一个错误消息,这个错误消息过来。
31:04
New,好了,显示一个错误消息,先获取一下吧,说object message等于request.my如果不是空的话,我就显示。If message不等于now,那我就点。问题看改个边跟底下啊,然后的话呢,写个out点,把message打出来保存再看。就是这个啊,你说老师这个是字体变成红色的,这个时候大家看我这个时候我们拿这个拼的话,是不是就有点麻烦了呀,是吧,所以说这个时候我们可以这么写了,拼,你要是就一两个的话,还好,你这样拼的话有点麻烦打出来。
32:19
边。For。Color red。Message保存再看。可以了,好了,这个abcde成功啊,是不是有了,那整个这个操作就OK了,那我删。商业可以成功。好啦,我家。MVC,北京。13455667799。
33:02
过来看查询,诶整个这个操作的话就可以了,这就是我们整个添加的流程,那实际上大家需要做什么呢?大家只需要把这个思路搞清楚,往我刚才写这个里边去添代码就可以了。那这个里边我们看到啊,首先我需要获取表单参数,然后的话呢,我进行了一个验证。验证说如果这个名字上数据库上数据包里边去查,要是查到这个记录要是大于零的话,那我就往请求域里边去放一个错误消息,然后呢,我通过转发啊去这个页面,我在页面上就可以把这个消息显示出来,而且还可以对表单进行回显,然后呢,我这边我怎么我是不是加了一个return呢?我加return的话,后边这些我就不用放在else里边了吧,Return是不是已经结束了?
34:06
除非这个不大于零,它才会往往后执行吧,出现了一个新的customer添加这块是一个重定向,这块的话呢,我们又一次看到什么时候是重定向,什么时候是转发。如果页面上需要用到啊,请求域里边的属性的话,我们应该使用。转发必须使用转发,那如果要是页面上用不着请求域里边的属性的话,可以使用纯定项,但这个时候大家看我这个时候使用转发是不是也可以呀。好了,我用一个,大家看一下,我用转发有什么不好的吗?
35:04
好了,我用了一个它保存。再来看就是转发啊,回对加一个艾特硅谷。北京。5257。152。Yeah。三米成功。成功好啦,我再点个刷新大家看。重试点回来怎么了,是不是告诉我这个已经被占用了,好了我再回来,我再回来,我实际上的话呢,我这个加入是可以成功的,我们发现我要是用转发的话,我要是用转发的话,我如果成功以后,我要是再点刷新的话,它会有一个表单的重复提交,我要是写重镜像的话,就没这个问题。
36:04
打开回来保存再看。已经楼顶了哈,加A个来。加个照啊。散。电话随便写一个啊。过来看成功了,你看这个时候这个。JSP这个地址栏是不是已经变成JSP了,你怎么刷都没事吧?看见了吧,哎,如果我要是使用转发的话,刷新就会有点问题,这个呢,我们是讲三针的时候,我们还会讲这个问题,说还有这么一个一个层次哈,说使用。重定向可以避免出现表单的重复提交问题。
37:08
后边我们讲三声的时候呢,我们会着重来讲什么是表达的重复聚焦,以及如何避免它。那我要是用这个的话呢,根本就不会出现,为什么呀,我用这个重镜像的话,是不是发了两个请求啊,地址栏已经变了,我刷的就是这个JSP,而你要使用什么呀,你要使用这个转发的话,我那个地址栏PUL会没变呢。我请求的还是刚才提交按钮那个请求,所以说的话呢,这个时候你再刷新的话,会出现一个重复提交的问题,这个我们在后面讲课的时候呢,还会详细来说,大家这块先做一个了解。好,我们这块的话呢,讲了一个什么时候用。转发什么时候用重定向,除了我们先前讲到的说,如果页面里边需要用请求域里边的属性的话,必用转发,用重定项不行,此外的情况,多数情况下我们推荐使用重定项,那还有一个原因就是使用重定项可以避免表单的重复提交问题,这个后到后边的话呢,我们还会详细的来进行说明,其他的呢。
38:26
那我觉得没有什么问题是吧,大家照着写就可以了。
我来说两句