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类中的方法抛出一个自定义异常即可,然后访问该方法,看结果是不是跳转到了我们期望的错误页面,

或者抛出一个运行时异常,测试我们编写的异常处理器是否按我们的理想中状态进行下去。
三、总结
数据回显懂原理即可,自定义异常处理器需要的时候要知道如何配置即可。
SpringMVC学习(四)———— 数据回显与自定义异常处理器的更多相关文章
- springmvc(五) 数据回显与自定义异常处理器
这章讲解一下springmvc的数据回显和自定义异常处理器的使用,两个都很简单 --WH 一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什 ...
- springMVC学习(8)-数据回显
什么是数据回显: 提交后,如果出现错误(或者别的情况),将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法: 一.springmvc默认对pojo数据进行回显. 比如现在的jsp页面提示出现 ...
- SpringMVC由浅入深day02_5数据回显_6异常处理器
5 数据回显 5.1 什么数据回显 表单提交失败需要再回到表单页面重新填写,原来提交的数据需要重新在页面上显示. 5.2 pojo数据回显方法 1.springmvc默认对pojo数据进行回显. po ...
- springmvc 类型转换器 数据回显及提示信息
处理器的写法: 类型转换器的写法: 类型转换器在springmvc.xml中的配置如下: index.jsp的写法:
- SpringMVC学习--数据回显
简介 表单提交失败需要再回到表单页面重新填写,原来提交的数据需要重新在页面上显示. 简单数据类型 对于简单数据类型,如:Integer.String.Float等使用Model将传入的参数再放到req ...
- SpringMVC【参数绑定、数据回显、文件上传】
前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定.. ...
- SpringMVC第五篇【方法返回值、数据回显、idea下配置虚拟目录、文件上传】
Controller方法返回值 Controller方法的返回值其实就几种类型,我们来总结一下-. void String ModelAndView redirect重定向 forward转发 数据回 ...
- 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。
1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xm ...
- SpringMVC(三) —— 参数绑定和数据回显
参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...
随机推荐
- python 实现rsa 的加密解密存读取(PEM格式证书)【转发】
来源:CSDN 原文:https://blog.csdn.net/sjt1996/article/details/83377800
- 京东Alpha平台开发笔记系列(三)
摘要:通过前面两篇文章的讲述,大致了解了JdAlpha平台前端开发的主要流程.接下来本篇文章主要讲述后台服务器端开发的主要流程.这里会涉及到后台服务器的搭建的内容,本篇文章就不以赘述,如需了解请读下面 ...
- virtualenv虚拟环境
1.你听过虚拟环境么? 虚拟:即不真实 环境:即周围的条件 那么到底什么事虚拟环境呢 2.虚拟环境 它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内 ...
- python insert所用 插入到自定的位置
a = list(range(50)) b = list(range(50)) c = [] for x in a: c.insert(x, [a[x], b[x]]) print(c)
- tomcat设置错误页面
今日学习笔记: 当我们访问tomcat的一个不存在的页面,返回错误信息如下: 这样的界面直接暴露给用户并不友好,有时候还不安全,因此一般需要修改默认的错误页. vim /$TOMCAT_HOME/co ...
- 用python实现文件自动上传
一.简介 用python实现文件自动上传,主要源于在测试项目中想实现自动化上传文件功能,无须手工输入.比如从windows到Linux,或从Linux到windows,或从Linux到Linux. 主 ...
- 程序员跳槽有一份好的简历,offer让你拿到手软
作者:果汁简历 工欲善其事必先利其器,这是自古以来的道理,所以如果想找到一份好的工作,一定要先整理一份好的简历. 模板 写简历首先要有一个好的模板,我们做技术的不同于 UX,UED,我们不需要那么花哨 ...
- Python面向对象5:类的常用魔术方法
魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹 - 操作类 - `__init__`: 构造函数 - `__new__`: 对象实例 ...
- 单元测试mock当前时间
在实际项目中很多地方用到DateTime.Now,这个时间是时时变化的.如果要进行单元测试对比预期结果时,这个时间无法预测,可以添加如下两个时间类 namespace Common.Helper { ...
- Jquery Ajax Realize whether the user is registered
XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页.当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据. XMLHt ...