深入浅出 SpringMVC-2 提升篇 深入理解springmvc源代码pdf
yuyutoo 2024-11-03 17:32 6 浏览 0 评论
前言:
本篇笔记是继 深入浅出 SpringMVC - 1 后的续篇,主要介绍了 SpringMVC 的实际小应用,包括 SpringMVC 的数据格式化、使用 JSR 303 验证标准 在 SpringMVC 中进行数据的校验、SpringMVC 结合 Ajax 在请求处理器中返回 JSON、SpringMVC 的国际化及国际化错误消息的显示、使用 SpringMVC 的进行文件的上传与下载、在 SpringMVC 中自定义拦截器、SpringMVC 中的异常处理、Spring 整合 SpringMVC 进行了详细的介绍。
笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片的形式展示的,所有的图片都是来自本人所敲代码的截图,不足之处,请大家指正~
若有疑惑或者需要本系列分享中的资料工具,敬请联系 qingqing_crawl@163.com
十二、数据的格式化
1. 时间日期格式化 时间日期的字符串 ---> Date 类型
1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven />
2)在 JavaBean 的对应 Date 类型的属性上添加 @DateTimeFormat(pattern="yyyy-MM-dd") 注解
2. 数值的格式化
1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven>
2)在 JavaBean 的对应数值类型的属性上添加 @NumberFormat(pattern="#,###,###.#") #代表数字
3. 获取数据格式化出错信息:使用 BindingResult
十三、使用 JSR 303 验证标准 在 SpringMVC 中进行数据的校验
1. 加入 Hibernate Validate 的 jar 包:hibernate-validator-5.0.0.CR2\dist 路径下
加入hibernate-validator-5.0.0.CR2\dist\lib\required 目录下的的出去 el 的另 3 个 jar 包
2. 在 SpringMVC 的配置文件中配置 <mvc:annotation-driven />
3.在 JavaBean 对应的属性中添加所需的注解
4. 在 请求控制器对应的方法中为 JavaBean 添加 @Valid 注解
5.出错之后页面的去向
6.在 jsp 页面显示错误信息
7. 定制和国际化错误信息
1)创建国际化资源文件 i18n.properties
2) 在 SpringMVC 的配置文件中配合国际化资源文件
十四、SpringMVC 的请求处理器中返回 JSON
1. 导入 3 个 jar 包:\jackson\SpringMVC_JSON 目录下的(此目录是LZ为了方便自定义的目录~~,大家只需注意一下的 jar 包)
2. jsp 页面创建测试连接,发送 Ajax
3. 请求处理器类的目标方法 直接返回所需要的数组或集合,并为目标方法添加 @ResponseBody 注解:
补:HttpMessageConverter 的使用:
1. @RequestBody 修饰入参 @ResponseBody 修饰方法 二者不必同时使用
1)模拟文件上传操作:
① 表单准备:
② 目标方法
2. HttpEntity<T> 修饰入参 和ResponseEntity<T> 修饰返回值
1)使用 ResponseEntity<T> 模拟文件下载操作
十五、SpringMVC 的国际化
进行国际化首先要配置 3 个国际化资源文件
然后在 SpringMVC 的配置文件中配置国际化资源文件
1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理 解决: 使用 JSTL 的 fmt 标签
1)i18n.jsp 中
2.如何在请求处理器类的目标方法中获取国际化资源文件 Locale 对应的消息 解决:在请求处理器类中注入 ResourceBundleMessageSource 的实例, 使用其对应的 getMessage 方法即可
3.通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况
1)jsp 页面配置超链接
2)SpringMVC 的配置文件中配置 SessionLocaleResolver 和 LocaleChangeInterceptor 拦截器
十六、SpringMVC 的文件上传与下载
1.SpringMVC 中的文件上传依赖 apache-commons-fileupload 组件,所以要导入 jar 包 apache-commons\commons-fileupload-1.2.1\lib 下的第一个 jar 包
2.apache-commons-fileupload 依赖于 commons-io ,所以导入 apache-commons\commons-io-2.0 下的 io 包
3.SpringMVC 的配置文件中配置 MultipartResolver
4.准备文件上传的表单
5.请求处理器中编写目标方法
补:文件的下载见 十五 节 补充中的第 2 小节
十七、自定义拦截器
1. 如何定义?
1)创建一个拦截器类实现 HandlerInterceptor 接口,实现其中的方法
2)在 SpringMVC 配置文件中进行配置
2. 自定义拦截器中的三个方法
3.拦截器的进一步配置
十八、SpringMVC 中的异常处理
1.在 SpringMVC 的配置文件中配置 <mvc:annotation-driven />
2.模拟异常
3.@ExceptionHandler注解标注方法进行异常的处理
4. @ControllerAdvice 注解用来标注异常处理类
5. @ResponseStatus 既可以用来标注自定义异常类,也可以标注方法
1)自定义异常类
3)@ResponseStatus 修饰方法
6. 在 SpringMVC 中使用 SimpleMappingExceptionResolver 来映射异常
1)模拟数组下标越界异常
2)在 SpringMVC 的配置文件中进行映射异常
十九、Spring 整合 SpringMVC
1.是否需要整合?
1)需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.
2) 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件
2.整合时常见问题及解决办法
问题:若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.
解决:
1) 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分. (不方便实现)
2.)可以使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解
3.SpringIOC 容器和 SpringMVC IOC 容器的关系
SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!
相关推荐
- 墨尔本一华裔男子与亚裔男子分别失踪数日 警方寻人
-
中新网5月15日电据澳洲新快网报道,据澳大利亚维州警察局网站消息,22岁的华裔男子邓跃(Yue‘Peter’Deng,音译)失踪已6天,维州警方于当地时间13日发布寻人通告,寻求公众协助寻找邓跃。华...
- 网络交友须谨慎!美国犹他州一男子因涉嫌杀害女网友被捕
-
伊森·洪克斯克(图源网络,侵删)据美国广播公司(ABC)25日报道,美国犹他州一名男子于24日因涉嫌谋杀被捕。警方表示,这名男子主动告知警局,称其杀害了一名在网络交友软件上认识的25岁女子。雷顿警...
- 一课译词:来龙去脉(来龙去脉 的意思解释)
-
Mountainranges[Photo/SIPA]“来龙去脉”,汉语成语,本指山脉的走势和去向,现比喻一件事的前因后果(causeandeffectofanevent),可以翻译为“i...
- 高考重要考点:range(range高考用法)
-
range可以用作动词,也可以用作名词,含义特别多,在阅读理解中出现的频率很高,还经常作为完形填空的选项,而且在作文中使用是非常好的高级词汇。...
- C++20 Ranges:现代范围操作(现代c++白皮书)
-
1.引言:C++20Ranges库简介C++20引入的Ranges库是C++标准库的重要更新,旨在提供更现代化、表达力更强的方式来处理数据序列(范围,range)。Ranges库基于...
- 学习VBA,报表做到飞 第二章 数组 2.4 Filter函数
-
第二章数组2.4Filter函数Filter函数功能与autofilter函数类似,它对一个一维数组进行筛选,返回一个从0开始的数组。...
- VBA学习笔记:数组:数组相关函数—Split,Join
-
Split拆分字符串函数,语法Split(expression,字符,Limit,compare),第1参数为必写,后面3个参数都是可选项。Expression为需要拆分的数据,“字符”就是以哪个字...
- VBA如何自定义序列,学会这些方法,让你工作更轻松
-
No.1在Excel中,自定义序列是一种快速填表机制,如何有效地利用这个方法,可以大大增加工作效率。通常在操作工作表的时候,可能会输入一些很有序的序列,如果一一录入就显得十分笨拙。Excel给出了一种...
- Excel VBA入门教程1.3 数组基础(vba数组详解)
-
1.3数组使用数组和对象时,也要声明,这里说下数组的声明:'确定范围的数组,可以存储b-a+1个数,a、b为整数Dim数组名称(aTob)As数据类型Dimarr...
- 远程网络调试工具百宝箱-MobaXterm
-
MobaXterm是一个功能强大的远程网络工具百宝箱,它将所有重要的远程网络工具(SSH、Telnet、X11、RDP、VNC、FTP、MOSH、Serial等)和Unix命令(bash、ls、cat...
- AREX:携程新一代自动化回归测试工具的设计与实现
-
一、背景随着携程机票BU业务规模的不断提高,业务系统日趋复杂,各种问题和挑战也随之而来。对于研发测试团队,面临着各种效能困境,包括业务复杂度高、数据构造工作量大、回归测试全量回归、沟通成本高、测试用例...
- Windows、Android、IOS、Web自动化工具选择策略
-
Windows平台中应用UI自动化测试解决方案AutoIT是开源工具,该工具识别windows的标准控件效果不错,但是当它遇到应用中非标准控件定义的UI元素时往往就无能为力了,这个时候选择silkte...
- python自动化工具:pywinauto(python快速上手 自动化)
-
简介Pywinauto是完全由Python构建的一个模块,可以用于自动化Windows上的GUI应用程序。同时,它支持鼠标、键盘操作,在元素控件树较复杂的界面,可以辅助我们完成自动化操作。我在...
- 时下最火的 Airtest 如何测试手机 APP?
-
引言Airtest是网易出品的一款基于图像识别的自动化测试工具,主要应用在手机APP和游戏的测试。一旦使用了这个工具进行APP的自动化,你就会发现自动化测试原来是如此简单!!连接手机要进行...
- 【推荐】7个最强Appium替代工具,移动App自动化测试必备!
-
在移动应用开发日益火爆的今天,自动化测试成为了确保应用质量和用户体验的关键环节。Appium作为一款广泛应用的移动应用自动化测试工具,为测试人员所熟知。然而,在不同的测试场景和需求下,还有许多其他优...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)