1.工作原理
(1)客户端(浏览器)发送请求,直接请求到 DispatcherServlet ;
(2)DispatcherServlet 根据请求信息调用 HandlerMapping 。HandlerMapping 根据请求url解析请求对应的Handler ,生成处理器执行链HandlerExecutionChain( 包括处理器对象和处理器拦截器 )一并返回给DispatcherServlet;
(3)DispatcherServlet根据处理器Handler获取处理器适配器 HandlerAdapter 来执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作 ;
(4)HandlerAdapter 会根据 Handler 来调用真正的处理器开处理请求,并处理相应的业务逻辑;
(5)处理器处理完业务后,会返回一个 ModelAndView 对象HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet, Model 是返回的数据对象, View 是个逻辑上的 View
(6)DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover解析后返回具体View;
(7)DispatcherServlet对View进行渲染视图( 即将模型数据model填充至视图中 );
(8)DispatcherServlet把 View 返回给请求者(浏览器)。
2.MVC核心组件
一个核心和九大组件
3.@controller注解的作用
springMVC扫描到该注解的类,然后扫描到类下面带有@requestMapping注解方法,根据注解生成一个处理器对象,即handlerMapping和handlerAdapter。还可以用HttprequestHandler和controller接口实现。
@requestmapping作用就是配置处理器的HTTP请求方法,进行映射。
@controller和@Restcontroller区别:@Restcontroller在@controller基础上增加了@responsebody注解,提供Restful API,返回例如JSON格式。返回根据客户端的accept请求头决定。
4.MVC拦截器
(1)preHandle,在执行实际处理程序前调用
(2)postHandle,在完成程序后调用
(3)afterCompletion,在完成请求后调用
5.Rest API对于不修改服务器资源的如GET是安全的,对PUT,POST,DELETE是不安全的
由于其基于HTTP,所以是无状态的。