百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

深入浅出 SpringMVC-2 提升篇 深入理解springmvc源代码pdf

yuyutoo 2024-11-03 17:32 2 浏览 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!

相关推荐

jQuery VS AngularJS 你更钟爱哪个?

在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...

Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0

在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...

如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例

要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...

编程技巧:Jquery实时验证,指定长度的「负小数」

为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

编程技巧:Jquery实时验证,指定长度的「正小数」

为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...

jquery.validate检查数组全部验证

问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...

Vue进阶(幺叁肆):npm查看包版本信息

第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...

layui中使用lay-verify进行条件校验

一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...

jQuery是什么?如何使用? jquery是什么功能组件

jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...

django框架的表单form的理解和用法-9

表单呈现...

jquery对上传文件的检测判断 jquery实现文件上传

总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...

Nodejs之MEAN栈开发(四)-- form验证及图片上传

这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...

大数据开发基础之JAVA jquery 大数据java实战

上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...

推荐四个开源的jQuery可视化表单设计器

jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...

取消回复欢迎 发表评论: