• SpringMVC学习(四)———— 数据回显与自定义异常处理器


    一、数据回显技术

          Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显

          1.1、什么是数据回显?

            在信息校验时,如果发生校验错误,那么把校验的数据信息,依然停留在当前页面,这就是数据回显

          1.2、pojo的数据回显

            Springmvc会把形参中pojo参数,放到request域中,key为pojo参数的类型首字母小写,也就是如果pojo参数为 Items items,那么就会将其items放到request域中,相当于request.setAttribute("items",items);  key为pojo参数类型首字母小写的意思就是这

            如果想使用pojo的默认回显,那么jsp中获取值的key就应该和pojo参数的类型首字母小写保持一致即可。      

          1.3、默认回显案例

            controller

              

            jsp页面

              

            分析:按照1.2的分析过程,就可以理解这里为什么会回显了,原因springmvc会将形参中的items放入request域中,并且key为items。而jsp中的对应这request作用域中的key值就自然可以获取到相应的数据了。

          1.4、使用注解显式完成回显  

            使用ModelAttribute注解来完成数据回显,它有两种用法:暴露形参到request域、暴露返回值到request域

            1.4.1、暴露形参到request域

              将@ModelAttribute("XXX")注解加在想要回显的形参的pojo对象前面,如下图所示

              controller方法

                

              @ModelAttribute("item")的意思就是将该对象放入request作用域中,并且key为指定的item,则在跳转后的页面中就可以通过${item.xxx}来获取各种数据了。

              

              jsp页面

                

            1.4.2、暴露返回值到request域

              将ModelAttribute注解加到方法上时,这个方法就会在requestmapping之前被调用,并且将返回的对象放入request作用域中。举例说明这个

              controller

                

                在controller类中,创建一个新的方法itemsType,在其方法上加上 @ModelAttribute("itemsType")就会将其返回的对象放入request域中,并且key为自己设定的itemsType,该方法则会在requestmapping之前被调用,也就是在每个要执行的处理方法之前被调用。这个方法中创建的一个map对象,然后返回放入request作用域,没有任何实际的意义,目的就是为了说明这个效果,一般我们直接使用默认的数据回显即可,即使需要改动key值,那么也可以使用第一种方案。

              jsp页面

                

          1.5、数据回显总结

            一般直接使用默认数据回显即可,如果需要改变key,使用注解回显的第一种方式,这里我们只是了解一下springmvc回显的原理,理解为什么会回显就够了。别遇到了看不懂即可。

    二、自定义异常处理器

          写这个自定义异常处理器的目的就是为了发生异常的,我们能够提供一个更友好的页面,而不是返回一个404或者500的错误提示页面给用户看,所以需要自定义一个异常处理器,等发生异常时,我们能够捕捉到,并且做一定的事情。

          2.1、自定义异常

            首先自己定义一个异常类,该异常类很简单,就用来存储一下异常信息的。内容如下

            BusinessException.java

              

          2.2、自定义异常处理器

            该处理器就处理一个业务逻辑:如果捕捉到自定义异常,那么久把自定义异常的错误信息取出。如果捕捉到运行时异常,那么就给出一个错误信息“未知错误"。        

            BusinessExceptionResolver

              

          2.3、配置异常处理器

            就是覆盖原先默认的异常处理器,没配置就是使用默认的,默认的就是系统自带的。拿到了异常就直接按我们经常显示404或者500或者别的错误信息的页面返回。但是通过我们上面自定义的异常处理器,当有异常时就捕捉到(为什么能捕捉到呢?所以为了让其能够捕捉到,所以我们需要配置我们自定义的异常处理器,这样有了异常才会交给它来处理),然后进行处理,然后在转到我们专门显示错误的页面

              

              

          2.4、错误页面

            随便配置一个,用来显示错误信息即可,要美化等其他的就另说

            error.jsp

              

          2.5、异常测试

            在controller类中的方法抛出一个自定义异常即可,然后访问该方法,看结果是不是跳转到了我们期望的错误页面,

              

            或者抛出一个运行时异常,测试我们编写的异常处理器是否按我们的理想中状态进行下去。

    三、总结

          数据回显懂原理即可,自定义异常处理器需要的时候要知道如何配置即可。

  • 相关阅读:
    青浦图书志
    师徒俩就这样比划着 讲着该怎么去使用Reactor Programming
    Stephane Maldini and Violeta Georgieva at SpringOne Platform 2019
    reactor 大会
    这样使用Mono.zip就可以合并多个值进行下一步运算
    You are totally right 和 You are absolutely right 区别
    reacctor 1
    developer.ibm.com
    zip~~~~~~~~~~~
    044 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 06 使用do-while循环实现猜字游戏
  • 原文地址:https://www.cnblogs.com/surfcater/p/10225722.html
Copyright © 2020-2023  润新知