Spring Boot2.x——Spring MVC(2)

1、处理器映射

如果Web工程使用了Spring MVC,那么它在启动阶段就会将注解@RequestMapping所配置的内容保存到处理器映射(HandlerMapping)机制中去,然后等待请求的到来,通过拦截请求信息与HandlerMapping进行匹配,找到对应的处理器(它包含控制器的逻辑),并将处理器及其拦截器保存到HandlerExecutionChain对象中,返回给DispatcherServlet,这样DispatcherServlet就可以运行它了。

2、获取控制器参数

2.1、在无注解下获取参数

2.2、使用@RequestParam获取参数

在默认情况下@RequestParam标注的参数是不能为空的,为了让它能够为空,可以配置其属性required为false。

2.3、传递数组

2.4、传递JSON

参数标注为@RequestBody,意味着它将接收前端提交的JSON请求体。

2.5、通过URL传递参数

2.6、获取格式化参数

对日期和数字类型的转换注解进行处理,分别是@DateTimeFormat和@NumberFormat。

在Spring Boot中,日期参数的格式化也可以不使用@DateTimeFormat,而只在配置文件application.properties中加入如下配置项即可:

spring.mvc.date-format=yyyy-MM-dd

3、自定义参数转换规则

3.1、处理器获取参数逻辑

当一个请求来到时,在处理器执行过程中,它首先会从HTTP请求和上下文环境来得到参数。如果时简易的参数它会以简单的转换器进行转换,而这些简单的转换器是Spring MVC自身已经提供了的。但是如果时转换HTTP请求体(Body),它就会调用HttpMessageConvert接口的方法对请求体的信息进行转换,首先它会判断能否对请求体进行转换,如果可以就会将其转换为Java类型。

在Spring MVC中,是通过WebDataBinder机制来获取参数的,它的主要作用是解析HTTP请求的上下文,然后在控制器的调用之前转换参数并且提供验证的功能,为调用控制器方法做准备。

处理器会从HTTP请求中读取数据,然后通过三种接口来进行各类参数转换,这三种接口是Converter、Formatter和GenericConverter。在SpringMVC的机制中这三种接口的实现类都采用了注册机的机制,默认的情况下Spring MVC已经在注册机内注册了许多的转换器,这样可以实现大部分的数据类型的转换,所以在大部分的情况下无需开发者再提供转换器。

Converter是一个普通的转换器,例如:有一个Integer类型的控制器参数,而从HTTP对应的为字符串,对应的Converter就会将字符串转换为Integer类型;其次,Formatter则是一个格式化转换器,类似那些日期字符串就是通过它按照约定的格式转换为日期的;最后,GenericConverter转换器则将HTTP参数转换为数组。

对于数据类型转换,Spring MVC提供了一个服务机制去管理,它就是ConversionService接口。在默认的情况下,会使用这个接口的子类DefaultFormattingConversionService对象来管理这些转换类。

3.2、一对一转换器(Convert)

3.3、GenericConverter集合和数组转换

4、数据验证

4.1、JSR-303验证

4.2、参数验证机制

5、数据模型

6、视图和视图解析器

视图是渲染数据模型展示给用户的组件,在Spring MVC中又分为逻辑视图和非逻辑视图。逻辑视图是需要视图解析器(ViewResolver)进行进一步定位的。对于非逻辑视图,则并不需要进一步地定位视图的位置,它只需要直接将数据模型渲染出来即可。

6.1、视图设计

7、文件上传

7.1、Spring MVC对文件上传的支持

7.2、开发文件上传功能

8、拦截器

8.1、拦截器的设计

8.2、开发拦截器

8.3、多个拦截器的顺序

9、国际化

9.1、国际化消息源

9.2国际化解析器

9.3、国际化示例

10、Spring MVC拾遗

10.1、@ResponseBody转换为JSON的秘密

10.2、重定向

10.3、操作会话对象

10.4、给控制器增加通知

10.5、获取请求头参数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值