一、概述
Controller接口类图如下,其中,BaseCommandController已从Spring 4移除
基于继承Controller接口的方式已经不推荐使用,仅供学习参考
二、基于Controller接口方式的使用介绍
1、继承自Controller接口的实现类AbstractController,可实现:
- 请求类型限定,如post
- session校验
- 缓存控制,如强缓存、协商缓存
详细可参考Controller接口控制器详解(1)
2、直接映射到视图、无功能处理的Controller接口的实现类:
- ParameterizableViewController 指定某一视图名
- UrlFilenameViewController 采用Ant-style 模式进行匹配,通过url生成视图名
详细可参考Controller接口控制器详解(3)
3、一个Controller可映射多个功能处理方法的实现类:MultiActionController,两种使用方式:
- 继承MultiActionController
- 直接实例化MultiActionController, 定义并注入delegate
详细可参考Controller接口控制器详解(5)
三、数据的类型转换和验证
1、类型转换
PropertyEditor被限制为只能String<——>Object之间转换,不能Object<——>Object,包括两类
- Spring内建的PropertyEditor
- 用户自定义,需继承PropertyEditorSupport ,用户自定义PropertyEditor有三类注册方式:
- WebDataBinder:针对单个控制器,暂无使用方式
- WebBindingInitializer:批量注册,MultiActionController中存在setter方法,可通过bean注入
- 使用约定自动全局注册:自定义的PropertyEditor放在和模型类同包下,且Editor命名规则必须是“模型类名Editor”
详细可参考Controller接口控制器详解(6)
2、数据验证
待仔细研读