SpringMVC學習03:初識SpringMVC
-
什麼是SpringMVC:
-
SpringMVC是Spring Framework的一部分,是基於Java實現MVC的輕量級web框架;
-
官方文件:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web
-
-
我們為什麼要學習SpringMVC:
-
SpringMVC的特點:
-
輕量級,簡單易學;
-
高效,基於請求響應的MVC框架;
-
與Spring相容性好,無縫結合;
-
約定大於配置;
-
功能強大:RESTFUL,資料驗證,格式化,本地化,主題等
-
簡潔靈活
-
-
Spring的web框架圍繞DispatcherServlet【排程Servlet】設計;
-
SpringMVC的核心:就是不用再手寫Servlet了;
-
DispatcherServlet的作用是將請求分發到不同的處理器,從Spring2.5開始,使用java 5或者以上版本的使用者可以採用基於註解形式進行開發,十分簡潔;
-
正因為SpringMVC好,簡單,便捷,易學,天生和Spring無縫整合(使用SpringIOC和AOP),使用約定大於配置,能夠進行簡單的Junit測試,支援RestFul風格,異常處理,本地化,國際化,資料驗證,型別轉換,攔截器等等
-
最重要的一點還是用的人多,使用的公司多【工作好找】
-
-
簡易DispatcherServlet的流程圖:
-
簡易流程圖:
-
DispatcherServlet的本質還是一個Servlet:
-
-
中心控制器:
-
Spring的web框架圍繞DispatcherServlet設計,DispatcherServlet的作用是將請求分發到不同的處理器。
-
SpringMVC框架和其他框架一樣,以請求為驅動,圍繞一箇中心Servlet分派請求及提供其他功能,DispatcherServlet本質也是一個Servlet(它繼承自HttpServlet基類);
-
-
SpringMVC的原理:
-
1,當發起請求時被前端控制器攔截到請求;
-
2,根據請求引數生成代理請求,找到請求對應的實際控制器(HelloController);
-
3,實際控制器處理請求,建立模型資料,訪問資料庫;
-
4,返回模型資料;
-
5,將模型響應給前端控制器(DispatcherServlet);
-
6,前端控制器使用模型去渲染檢視;
-
7,將結果返回給前端控制器;
-
8,前端控制器再將結果返回給請求者;
-
-
SpringMVC的執行原理:
-
流程圖:
-
圖為SpringMVC的一個完整的流程,實線表示SpringMVC框架提供的技術,不需要開發者實現,虛線表示需要開發者實現;
-
分析執行原理:
-
1,DispatcherServlet是前置端控制器,是整個SpringMVC的控制中心,使用者發出請求後,DispatcherServlet接收請求並攔截請求;
我們假設請求的url為 : http://localhost:8080/SpringMVC/hello
-
如上的URL拆分為三部分:
-
http://localhost:8080伺服器域名;
-
SpringMVC部署在伺服器上的web站點;
-
hello表示控制器;
-
通過分析,如上的URL表示為:請求位於伺服器localhost:8080上的SpringMVC站點的hello控制器;
-
2,HandleMapping為處理器對映,DispatcherServlet呼叫HandleMapping;HandleMapping根據請求url查詢Handler;
-
3,HandlerExecution表示具體的Handler,其主要作用是根據url查詢控制器,如上url被查詢控制器為:hello;
-
4,HandlerExecution將解析後的資訊傳遞給DispatcherServlet,如解析控制器對映等;
-
5,HandlerAdapter表示處理器介面卡,其按照特定的規則去執行Handler;
-
6,Handler讓具體的Controller執行;
-
7,Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView;
-
8,HandlerAdapter將ModelAndView傳遞給DispatcherServlet;
-
9,DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的ModelAndView。
-
10,檢視解析器ViewResolver將解析的邏輯檢視名傳給DispatcherServlet;
-
11,DispatcherServlet根據檢視解析器解析的檢視結果,呼叫具體的檢視;
-
12,返回給使用者;
-
-
-