SpringMVC提供了一个DispatcherServlet作为前端控制器,其分配请求,调度控制的作用
    第2章 Spring MVC简介 - 图1
    根据这里的springmvc-config.xml,创建一个WebApplicationContext容器对象,也成上下文环境
    DispatcherServlet获取到请求后,会将请求分发给对应处理的Java类(SpringMVC中称之为Handle)
    这个类就是一个Controller类,即控制器
    其实现方式有两种:
    1、需要实现Controller接口—>Handle类必须复写handleRequest()方法

    1. public ModelAndView handleRequest(HttpServletRequest request,
    2. HttpServletResponse response)

    2、基于注解,@RequestMapping,映射请求和该请求对应的方法
    处理映射器HandlerMapping, 根据请求,查找映射
    处理器适配器HandlerAdapter,选择合适的Handler(Conntroller)
    执行Handler(Conntroller)
    视图解析器ViewResolver,接收到视图后,解析,将View呈现给用户
    开发第一个SpringMVC应用
    MVC框架建议:
    所有的视图页面都放在WEB-INF文件夹下,这样可以保护视图页面,避免直接向视图页面发送请求。
    用户的所有请求应该都向控制器发送,由控制器调用模块组件和视图组件向用户呈现数据
    处理映射器RequestMappingHandlerMapping
    处理适配器RequestMappingHandlerAdapter
    建立Spring MVC应用开发的两种类型
    传统方法:基于XML配置
    Controller类需要实现Controller接口,里面必须有 ModelandView handleRequest()方法
    注解方法:基于注解的控制器
    Controller类不需要实现Controller接口了,改为使用注解方式来描述。_@_Controller
    该类里面的方法需要使用@RequestMapping(value=”/hello”)注解,告知前端控制器,/hello请求对应,使用该注解的方法
    2.4 详解DispatcherServlet前端控制器
    会装配各种组件
    第2章 Spring MVC简介 - 图2
    这样,控制器就不会与特定的视图相耦合,传递给DispatcherServlet的视图名并不直接表示某个特定的JSP。实际上,它甚至并不能确定视图就是JSP。相反,它仅仅传递了一个逻辑名称,这个名字将会用来查找产生结果的真正视图。
    DispatcherServlet将会使用视图解析器(viewresolver)来将逻辑视图名匹配为一个特定的视图实现,它可能是也可能不是JSP。
    2.5 SpringMVC执行的流程
    GET 方法
    请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
    POST 方法
    请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
    “约定优于配置”
    Spring MVC执行的流程
    …..
    DispatcherServlet
    HandlerMapping
    HandlerAdapter
    ViewResolver
    理解视图解析
    第2章 Spring MVC简介 - 图3
    InternalResourceViewResolver所采取的方式并不那么直接。它遵循一种约定,会在视图名上添加前缀和后缀,进而确定一个Web应用中视图资源的物理路径。