【SpringMVC】概述
概述:
SpringMVC:是基于spring的一個框架, 實際上就是spring的一個模塊, 專門是做web開發(fā)的。
?? ?? ?? ?? ?? ?? ?? ?理解是servlet的一個升級
SpringMVC就是一個Spring。
Spring是容器,ioc能夠管理對象,使用<bean>, @Component, @Repository, @Service, @Controller
SpringMVC能夠創(chuàng)建對象, 放入到容器中(SpringMVC容器), springmvc容器中放的是控制器對象
我們要做的是:
- 使用@Contorller創(chuàng)建控制器對象
- 把對象放入到springmvc容器中
- 把創(chuàng)建的對象作為控制器使用
- 這個控制器對象能接收用戶的請求, 顯示處理結(jié)果,就當(dāng)做是一個servlet使用。
- 使用@Controller注解創(chuàng)建的是一個普通類的對象, 不是Servlet。 springmvc賦予了控制器對象一些額外的功能。
web開發(fā)底層是servlet , 而SpringMVC的框架是在servlet基礎(chǔ)上面加入一些功能,做web開發(fā)方便。
springmvc中有一個對象是Servlet : DispatherServlet(中央調(diào)度器)
DispatherServlet: 負(fù)責(zé)接收用戶的所有請求, 用戶把請求給了DispatherServlet
之后DispatherServlet把請求轉(zhuǎn)發(fā)給我們的Controller對象, 最后是Controller對象處理請求。
流程:
index.jsp-----DispatherServlet(Servlet)----轉(zhuǎn)發(fā),分配給—Controller對象(@Controller注解創(chuàng)建的對象)
main.jsp?? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ? ?? ?? ?? ?? ? MainController
addUser.jsp ?? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?? ?? ??? ?? ?UserController
處理流程:
1)發(fā)起some.do
2)tomcat(web.xml–url-pattern知道 *.do的請求給DispatcherServlet)
3)DispatcherServlet(根據(jù)springmvc.xml配置知道 some.do—doSome())
4)DispatcherServlet把some.do轉(zhuǎn)發(fā)個MyController.doSome()方法
5)框架執(zhí)行doSome()把得到ModelAndView進(jìn)行處理, 轉(zhuǎn)發(fā)到show.jsp
上面的過程簡化的方式
some.do—DispatcherServlet—MyController
執(zhí)行過程源代碼分析:
- tomcat啟動,創(chuàng)建容器的過程
通過load-on-start標(biāo)簽指定的1,創(chuàng)建DisaptcherServlet對象,
DisaptcherServlet它的父類是繼承HttpServlet的, 它是一個serlvet, 在被創(chuàng)建時,會執(zhí)行init()方法。
在init()方法中
//創(chuàng)建容器,讀取配置文件
WebApplicationContext ctx = new ClassPathXmlApplicationContext(“springmvc.xml”);
//把容器對象放入到ServletContext中
getServletContext().setAttribute(key, ctx);
上面創(chuàng)建容器作用: 創(chuàng)建@controller注解所在的類的對象, 創(chuàng)建MyController對象,
這個對象放入到 springmvc的容器中, 容器是map , 類似 map.put(“myController”,MyController對象)
-
請求的處理過程
1)執(zhí)行servlet的service()
protected void service(HttpServletRequest request, HttpServletResponse response)
protected void doService(HttpServletRequest request, HttpServletResponse response)
DispatcherServlet.doDispatch(request, response){ 調(diào)用MyController的.doSome()方法 }doDispatch:springmvc中DispatcherServlet的核心方法, 所有的請求都在這個方法中完成的。
-
WEB-INF目錄下的數(shù)據(jù),用戶是無法訪問的
流程圖:
執(zhí)行流程:
(1)瀏覽器提交請求到中央調(diào)度器
(2)中央調(diào)度器直接將請求轉(zhuǎn)給處理器映射器。
(3)處理器映射器會根據(jù)請求,找到處理該請求的處理器,并將其封裝為處理器執(zhí)行鏈后返回給中央調(diào)度器。
(4)中央調(diào)度器根據(jù)處理器執(zhí)行鏈中的處理器,找到能夠執(zhí)行該處理器的處理器適配器。
(5)處理器適配器調(diào)用執(zhí)行處理器。
(6)處理器將處理結(jié)果及要跳轉(zhuǎn)的視圖封裝到一個對象 ModelAndView 中,并將其返回給處理器適配器。
(7)處理器適配器直接將結(jié)果返回給中央調(diào)度器。
(8)中央調(diào)度器調(diào)用視圖解析器,將 ModelAndView 中的視圖名稱封裝為視圖對象。
(9)視圖解析器將封裝了的視圖對象返回給中央調(diào)度器
(10)中央調(diào)度器調(diào)用視圖對象,讓其自己進(jìn)行渲染,即進(jìn)行數(shù)據(jù)填充,形成響應(yīng)對象。
(11)中央調(diào)度器響應(yīng)瀏覽器。
總結(jié)
以上是生活随笔為你收集整理的【SpringMVC】概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaWeb】servlet与htt
- 下一篇: 外包工作经历暨2021年终总结