00:00
下边呢,我们来看一下这个response status exception。我们来直接看它的源代码。CTRLTCTRLV。先看John do。说这个类呢,是handle exam reserve的实现类。它使用。Response data这个注解把exception映射为HTTP的状态码。我们再来看它的。源代码看这个代码,首先呢,我来获取这个responses这个注解,然后调用这个方法点一下。在这个response status这个方法里面,首先搞到了response status的value值,这个value呢,应该是这个注解的一个属性值,然后又搞到了这个reason值,这个reason应该也是它的一个属性值,对吧?好的,然后我们看我们看如果。这个reason值要是没有长度的话,没有长度就意味着这个什么呀,这个reason是空,或者这个reason的长度为零,这个时候呢,直接把这个态码发到客户端,调的是response send error方法,如果这个reason要是有长度的话,那我调的就是呃,Send error,重载这个是吧,把这个状态码跟都发到了客户端是吧?这就是整套的逻辑,我们再来看一下这个status。
01:25
点一下,诶这个呢,实际上是一个注解,我们看看这个注解的解释吧。这个注解呢,有两个属性,刚才看到了是吧?一个是value reason,这个注解呢,可以标记方法,也可以标记一个异常类,看到了吧?OK,现在我们就来试验一下,呃,上节课呀,有一个小细节处理的不是特别好,我们来说一下啊,这个handle exception,如果你要是仅是看这个名字的话,感觉这好像是一个异常类是吧?我开始的时候写的是什么呀?叫exception handler,还跟这个注解冲了,我把这个名改一下,改成spring mvc k的exception hunter。
02:15
改完之后呢,其他的不受影响,好,我们现在我们先来定义一个自定义的异常,那比方说叫user name not match paror。Exception。这是一个异常类,它继承了runtime exception control。CTRL1OK。构造器我就不重载了哈,然后呢,我们来。目标handle里边来写一个测试方法。Public test response status except reserve。
03:09
返回值应该是个什么呀?应该是一个string,对吧,我return一个success,诶我们也采用这样的方式,我干什么呀?我传入一个参数request。这个参数呢,是。这个参数呢是I。然后我写个int I好的if,如果I这个值。等于13的话,我就抛一个异常出去,New name。Note match password exception好了,把这异常抛出去,否则呢,打印一句话,正常执行。
04:00
好,写完再来写一个request mapping。找到我们的index.jsp。这个是哈。BBAV。T带一个变量I等于十,好了,先找一下看看效果。刷新。我叫范。在这点一下,诶,我们注意到这个时候呢,会来到我的这个success配置,同时这个信息也可以打印是吧?好了,我把这个值改为十三点一下,这个时候呢,抛出了异常,什么异常啊,我们自个抛这个异常,然后这个页面呢啊,也是一个异常页面。
05:12
好了,下面呢,我就来使用这个。Response status这个注解,这个注解啊,可以来修饰这个类修饰一下,大家看一下哈,At response status它有两个属性,第一个叫。Value,这实际上是一个状态码STTP点,哎,我们来找一个,比方说找一个forbiden不允许,然后呢,还有一个reason reason,我们说用户名。和密码不匹配,看到了吧,搞定。重来。走起。注意13走,我们看到依旧是给我一个误页面,不过这个错误页面的状态码和信息是不是我定制的呀,怎么定制的呀?
06:09
就是使用我这个response status注解定制的一个是状态码forbidden,应该是403是吧,还有一个就是这个reason响应的这个消息,哎,这个呢,就是我们把这个注解放在类上面的效果好的,下面的话呢,我实际上这个注解还可以放在方法上面,我来写一下啊,Response status。Reason,等于我写个测试吧。还有一个叫value等于http status点。我随便找一个。找一个什么呢。
07:01
找一个我们认识的,比方说note房子。忘了,这应该是个404吧,好,我们看一下效果先。效果我现在呢,我给它改为正常值,我们知道这个十是不应该有异常液面的吧,走。这个十啊。不应该有异常,不应该有异常页面是吧?但它还是来了一个异常页面,看见了吗?就是因为我在那个方法上标识了那个response status的注解,看见了吧?不过我们看到这个目标方法呢,被正常的执行了,但是我们在这个页面上反馈的却是我response status这个注解标识的这个,呃,跟status同时,这是一个错误页面。好吧,以上的话呢,就是我们说的这个叫response status。
08:00
它处理response这个注解标识的异常类或者是异常方法。
我来说两句