SpringMVC简述
- 本质是对servlet的封装
- 全局只有一个servlet---->DispatcherServlet(前端控制器),相当于包工头的角色,专门进行派活
SpringMVC处理流程
流程说明
- ⽤户发送请求⾄前端控制器DispatcherServlet
- DispatcherServlet收到请求调⽤HandlerMapping处理器映射器
- 处理器映射器根据请求Url找到具体的Handler(后端控制器),⽣成处理器对象及处理器拦截 器(如果 有则⽣成)⼀并返回DispatcherServlet
- DispatcherServlet调⽤HandlerAdapter处理器适配器去调⽤Handler
- 处理器适配器执⾏Handler
- Handler执⾏完成给处理器适配器返回ModelAndView
- HandlerAdapter向前端控制器返回 ModelAndView,ModelAndView 是SpringMVC 框架的⼀个 底层对 象,包括 Model 和 View
- 前端控制器请求视图解析器去进⾏视图解析,根据逻辑视图名来解析真正的视图。
- 视图解析器向前端控制器返回View
- 前端控制器进⾏视图渲染,就是将模型数据(在 ModelAndView 对象中)填充到 request 域
- 前端控制器向⽤户响应结果
SpringMVC 九大组件
- HandlerMapping(处理器映射器):存储的是URL和Handler的映射关系,哪一个Handler处理哪一个URL在这里进行维护;在请求到达后,HandlerMapping的作用便是找到请求相应的处理器Handler和Interceptor。
- HandlerAdapter(处理器适配器):因为Spring MVC中Handler可以是任意形式的,只要能处理请求即可。但是把请求交给Servlet的时候,由于Servlet的方法结构都是doService(HttpServIetRequest req,HttpServIetResponse resp)形式的,要让固定的Servlet处理方法调用Handler来进行处理,便是HandIerAdapter的职责。
- HandlerExceptionResolver(异常处理)
- ViewResolver(视图解析器)
- RequestToViewNameTranslator:从请求域中获取ViewName
- LocaleResolver:国际化
- ThemeResolver:主题设置
- MultipartResolver:文件上传
- FlashMapManager:FlashMap 用于重定向的参数传递
请求参数绑定
绑定pojo类型参数:直接声明形参,传递的参数名称需跟pojo属性名保持一致
绑定pojo包装类型:同上,不过定位数据项的时候,要通过属性名 + “.”的方式进一步锁定数据
//Example:
public class Add{
private String mail;
private String phone;
private User user;
//省略get/set方法
}
//前端页面
<a href="/handle?user.id=1&user.name=aaa">点击获取</a>
//后端逻辑
@RequestMapping("/handle")
public ModelAndView handle(Add add){
//system.out.println(add);
}
绑定日期类型参数:自定义转换器,然后在SpringMVC中注册即可使用