[TOC]
SpringMVC
SpringMVC框架基于WEB MVC的一个轻量级框架,转发过程图:
涉及到几个重要的处理过程:
- DispatcherServlet
- HandlerMapping
- HandleAdapter
- ViewResolver
Question:
- 请求如何发到DispatcherServlet(前端控制器)?
web.xml中配置DispatcherServlet(如下的步骤2),即可拦截请求。- DispatcherServlet如何根据请求信息选择不同的处理器进行处理? HandlerMapping,里面包含一儿handler和多个拦截器HandlerInterceptor,通过策略模式,很容易添加新拦截器。
- 如何支持多种页面处理器?
HandleAdapter(适配器模式)将根据适配结果调用真正的处理器进行处理。
Spring控制器DispatcherServlet
SpringMVC是一个基于DispatcherServlet的MVC框架,所有的请求都是首先提交给DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler。DispatcherServlet是继承自HttpServlet的。
web.xml中配置
<!-- 1.Spring配置 -->
<listener>
<listenerclass>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的
,Spring监听器。会自动找到所有配置在applicationContext.xml中的Spring Beans。简单来说它的作用就是启动Web容器时,自动装配ApplicationContext的配置信息
<!-- 2.springMVC式rest -->
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如rest-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:rest-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
以上是基本配置。
<url-pattern>
表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的
rest-servlet.xml的配置
1 | <?xml version="1.0" encoding="UTF-8"?> |
参考文献:
第二章 Spring MVC入门