1.工作流程1用户通过浏览器向服务器发送请求请求会被Spring MVC的前端控制器DispatcherServlet拦截。2DispatcherServlet拦截到请求后会调用HandlerMapping处理器映射器。3处理器映射器根据请求URL找到具体的处理器生成处理器对象及处理器拦截器如果有则生成一并返回给DispatcherServlet。4DispatcherServlet会通过返回信息选择合适的HandlerAdapter处理器适配器。5 HandlerAdapter会调用并执行Handler处理器这里的处理器指的就是程序中编写的Controller类也被称之为后端控制器。6Controller执行完成后会返回一个ModelAndView对象该对象中会包含视图名或包含模型和视图名。7HandlerAdapter将ModelAndView对象返回给DispatcherServlet。8前端控制器请求视图解析器根据逻辑视图名解析真正的视图。9ViewResolver解析后会向DispatcherServlet中返回具体的View视图。10DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。11前端控制器向用户响应结果浏览器将结果呈现给用户。在上述过程中DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver对象的工作是在框架内部执行的开发人员只需要配置DispatcherServlet完成Controller中的业务处理并在View中展示相应信息。2.DispatcherServlet****类DispatcherServlet是前端控制器是整个流程控制的中心。该类拦截了客户端的请求之后会根据具体规则将请求交给其他组件处理从而降低了组件之间的耦合性。3.Controller****接口SpringMVC将Controller接口的实现类组件名作为请求访问的URL进行映射进而执行handleRequest()方法中的业务逻辑代码。4.RequestMapping****注解RequestMapping注解用于建立请求URL和Handler处理器之间的映射关系该注解可以标注在方法上和类上。1标注在 方法上 时注解内 value值 对应到浏览器中输入的 访问地址 站点名之后 URL 字符串。请求地址http://localhost:8080/chapter01/hello Controller public class MyController { private static final Logger loggerLogger.getLogger(MyController.class); RequestMapping(/hello) public String sayHello() { logger.info(访问到MyController!); return hello; } }2 标注在 类名上 时注解内 value值 相当于设置了本处理器类的 命名空间 类中所有请求地址应为命名空间名 方法映射地址名。请求地址http://localhost:8080/chapter01/api/hello Controller RequestMapping(/api) public class MyController { private static final Logger loggerLogger.getLogger(MyController.class); RequestMapping(/hello) public String sayHello() { logger.info(访问到MyController!); return hello; } }(3)包含的传递参数属性名类型描述nameString可选属性用于为映射地址指定别名。valueString[]可选属性也是默认属性用于指定请求的URL。methodRequestMethod[]可选属性用于指定该方法可以处理哪种类型的请求方式。paramsString[]可选属性用于指定客户端请求中参数的值必须包含哪些参数的值才可以通过其标注的方法处理。headersString[]可选属性用于指定客户端请求中必须包含哪些header的值才可以通过其标注的方法处理。consumesString[]可选属性用于指定处理请求的提交内容类型Content-type。producesString[]可选属性用于指定返回的内容类型仅当request请求头中的Accept类型中包含该指定类型才返回。4 组合注解从Spring 4.3版本开始还可以使用组合注解完成客户端请求方式的限定。GetMapping 匹配 GET 方式的请求 PostMapping 匹配 POST 方式的请求 PutMapping 匹配 PUT 方式的请求 DeleteMapping 匹配 DELETE 方式的请求 PatchMapping 匹配 PATCH 方式的请求 5.ModelAndView****类ModelAndView类用于封装Controller的处理结果除了包含数据之外还包含要跳转的页面。