Ø 工作流程:
1) 客户端发送http请求给web服务器,服务器对该请求进行解析。若匹配DispatcherServlet的请求映射路径,web容器将用户请求转交给DispatcherServlet。DispatcherServlet在web.xml中配置。
2) DispatcherServlet控制器查询HandlerMapping,找到处理请求的Controler。
3) Controler调用业务逻辑(xxxService)处理后,返回ModelAndView
4) DispatchServlet查询视图解析器,找到ModelAndView制定的视图。
5) 视图展现在客户端。
Ø m、v、c分别指:
1) m:model,即模型。持久层。与数据库打交道,封装数据操作。
2) v:view,即视图。显示层。接收c传过来的参数,并显示给用户
3) c:controler,即控制器。业务逻辑层。
Ø 注意点(俗称坑):
1) DispatcherServlet配置路径
<servlet-mapping><url-pattern/>路径配置一般为”/”,表示所有请求都让SpringMVC处理,包括静态资源,如js,css,jpg等。但需要在SpringMVC配置文件中添加mvc:resources。
2) 特殊bean的id应固定
在xml中配置MultipartResolver的bean时,常用
org.springframework.web.multipart.commons.CommonsMultipartResolver。但bean id必须为multipartResolver。其他还有localeResolver、themeResolver等。必须使用固定的id,且不可省略。若遇到配置是正常的,但却不工作,去DispatcherServlet看看bean的id是不是被固定了。
3) 项目既使用Spring容器,又使用SpringMVC
需在web.xml配置容器监听器
org.springframework.web.context.ContextLoaderListener。
并配置DispatcherServlet。如下。
<servlet>
<servlet-name>zsfz</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>zsfz</servlet-name>
<url-pattern>*.zsfz</url-pattern>
</servlet-mapping>
4) 提供springmvc annotation
默认<mvc:annotation-driven/>。作用:向spring容器注册
AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor 、RequiredAnnotationBeanPostProcessor这 4 个BeanPostProcessor。为了系统能够识别相应的注解。
参考:
http://blog.csdn.net/monkeyking1987/article/details/19022387