配置
- web.xml
和普通servlet一样配置。
<!-- 这个就是SpringMVC的核心了,他本质是一个Servlet。所有url-pattern路径下的请求,都会经过这个Servlet -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<!-- 这个是代表哪些请求会被处理 -->
<url-pattern>/*</url-pattern>
</servlet-mapping>
组件
- 调度器 DispatcherSevlet (核心组件,这个servlet的doDispatch方法是核心流程)
- 处理器映射 RequestMappingHandlerMapping
- 处理器适配器 HttpRequestHandlerAdapter
- 处理器 Handler
- 拦截器 HandlerInterceptor
- 异常处理器 HandlerExceptionReslover
- 视图解析器 HandlerReslover
- 视图 View
执行流程
- dispatcherservlet接收到http请求
- 通过HandlerMapping查询到Handler和Interceptor,返回执行链
- 匹配合适的适配器,适配器调用处理程序
- 首先执行过滤器前置方法
- 执行处理程序 即控制器
- 最后执行过滤器后置方法
- 处理返回结果
- 如果有异常,调用异常处理器处理异常,返回modelandview
- 渲染
- viewRselover匹配到对应视图
- model里面的值解析到request中
- 把请求和view交给具体的视图技术渲染,比如jsp、html等