https://www.cnblogs.com/best/p/9933072.html
http://www.itdecent.cn/p/83385852f711
這里需要再增加對java EE的了解
JavaEE體系結構包括四層,從上到下分別是應用層、Web層、業(yè)務層、持久層。Struts和SpringMVC是Web層的框架,Spring是業(yè)務層的框架,Hibernate和MyBatis是持久層的框架。

- 用戶發(fā)送請求至前端控制器DispatcherServlet
- DispatcherServlet收到請求調(diào)用HandlerMapping處理器映射器。
- 處理器映射器找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
- DispatcherServlet調(diào)用HandlerAdapter處理器適配器
- HandlerAdapter經(jīng)過適配調(diào)用具體的處理器(Controller,也叫后端控制器)。
- Controller執(zhí)行完成返回ModelAndView
- HandlerAdapter將controller執(zhí)行結果ModelAndView返回給DispatcherServlet
- DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
- ViewReslover解析后返回具體View
- DispatcherServlet根據(jù)View進行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
- DispatcherServlet響應用戶
所以SpringMVC:它用于web層,相當于controller(等價于傳統(tǒng)的servlet和struts的action),用來處理用戶請求。舉個例子,用戶在地址欄輸入http://網(wǎng)站域名/login,那么springmvc就會攔截到這個請求,并且調(diào)用controller層中相應的方法,(中間可能包含驗證用戶名和密碼的業(yè)務邏輯,以及查詢數(shù)據(jù)庫操作,但這些都不是springmvc的職責),最終把結果返回給用戶,并且返回相應的頁面(當然也可以只反饋josn/xml等格式數(shù)據(jù))。springmvc就是做前面和后面過程的活,與用戶打交道??!
【備注】以上是ssm框架的運作流程,其中可以看出一個IOC的概念:
IOD:控制反轉(zhuǎn),將對象的創(chuàng)建過程交給容器,讓容器管理對象的生命周期如創(chuàng)建,初始化,銷毀等。從第二步可以看到,整個系統(tǒng)將controller的生成和銷毀都交給了handlerMapper。
【疑問?】早前,我們也會將controller全部配置在web.xml中,controller也是自動生成的?
Spring的配置文件有哪些內(nèi)容?
? 開啟事務注解驅(qū)動
? 事務管理器
? 開啟注解功能,并配置掃描包
? 配置數(shù)據(jù)源
? 配置SQL會話工廠、別名、映射文件
? 不用編寫DAO層的實現(xiàn)類(代理模式)Spring的注解
? @Controller
? @Service
? @Component
? @RequestMapping
? @Resource、@Autowired
? @ResponseBody
? @Transactional