一、首先,咱们先来认识一下 SpringMVC 的次要组件
前端控制器(DisatcherServlet): 接管申请,响应后果,返回能够是 json,String 等数据类型,也能够是页面(Model)。
处理器映射器(HandlerMapping): 依据 URL 去查找处理器,个别通过 xml 配置或者注解进行查找。
处理器(Handler):就是咱们常说的 controller 控制器啦,由程序员编写。
处理器适配器(HandlerAdapter): 能够将处理器包装成适配器,这样就能够反对多种类型的处理器。
视图解析器(ViewResovler): 进行视图解析,返回 view 对象(常见的有 JSP,FreeMark 等)。
二、SpingMVC 的工作原理
上面是文字步骤阐明:
1、用户发送申请到前端控制器(DispatcherServlet)。
2、前端控制器申请处理器映射器(HandlerMapping)去查找处理器(Handler)。
3、找到当前处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)。
4、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)。
5、处理器适配器去执行 Handler。
6、处理器执行完给处理器适配器返回 ModelAndView。
7、处理器适配器向前端控制器返回 ModelAndView。
8、前端控制器申请视图解析器(ViewResolver)去进行视图解析。
9、视图解析器向前端控制器返回 View。
10、前端控制器对视图进行渲染。
11、前端控制器向用户响应后果。
三、SpingMVC 的应用
须要在 web.xml 中配置 DispatcherServlet。并且须要配置 spring 监听器 ContextLoaderListener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 如果不设置 init-param 标签,则必须在 /WEB-INF/ 下创立 xxx-servlet.xml 文件,其中 xxx 是 servlet-name 中配置的名称。-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>