版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章SpringMVC入門SpringMVC與MyBatis企業(yè)開發(fā)實戰(zhàn)第6章SpringMVC入門SpringMVC與MyBat1
目錄1SpringMVC
入門簡介目錄1SpringMVC入門簡介2MVC設(shè)計思想MVC即Model-View-Controller,把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
MVC設(shè)計思想MVC即Model-View-Controll3MVC設(shè)計思想MVC是一種復合模式,結(jié)合了觀察者模式、策略模式、組合模式、適配器模式。
模型使用觀察者模式,以便觀察者更新,同時保持兩者之間的解耦。控制器是視圖的策略,視圖使用組合模式實現(xiàn)用戶界面。適配器模式用來將模型適配成符合現(xiàn)有視圖和控制器的需要的模型。
這些模式合作把MVC模式的三層解耦。MVC設(shè)計思想MVC是一種復合模式,結(jié)合了觀察者模式4MVC設(shè)計思想視圖(View)代表用戶交互界面,對于Web應用來說,可以是HTML,也可能是jsp、XML和Applet等。一個應用可能有很多不同的視圖,MVC設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。
MVC設(shè)計思想視圖(View)代表用戶交互界面,對于5MVC設(shè)計思想
模型(Model):是業(yè)務(wù)的處理以及業(yè)務(wù)規(guī)則的制定。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計是MVC最主要的核心。MVC設(shè)計模式告訴我們,把應用的模型按一定的規(guī)則抽取出來,抽取的層次很重要,抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設(shè)計方法,而只是組織管理這些模型,以便于模型的重構(gòu)和提高重用性。業(yè)務(wù)模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實體對象的數(shù)據(jù)保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨列出,所有有關(guān)數(shù)據(jù)庫的操作只限制在該模型中。
MVC設(shè)計思想6MVC設(shè)計思想控制(Controller)可以理解為從用戶接收請求,將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接,控制層接受請求后,并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。
MVC設(shè)計思想控制(Controller)可以理解為7Jspmodel1架構(gòu)Model1的基礎(chǔ)是JSP文件,它由一些相互獨立的JSP文件和其他一些JavaClass組成。這些JSP從HTTPRequest中獲得所需要的數(shù)據(jù),處理業(yè)務(wù)邏輯,然后將結(jié)果通過Response返前端瀏覽器。Model1的應該說是唯一的好處是“簡單”,可以大大加快系統(tǒng)的開發(fā)進度。它把表現(xiàn)層和業(yè)務(wù)邏輯層柔和在一起,不利于以后的維護工作以及開發(fā)角色的分配,所以這種模式只能適合于小的系統(tǒng)開發(fā)。Jspmodel1架構(gòu)Model1的基礎(chǔ)是JS8Jspmodel2架構(gòu)
Model2采用面向?qū)ο蠹夹g(shù)實現(xiàn)MVC模式從而擴展JSP/Servlet的模式。Model2是MVC在Web上的應用。Jspmodel2架構(gòu)Model2采用面向?qū)?一個Model2規(guī)范實現(xiàn)的Web框架一個Model2規(guī)范實現(xiàn)的Web框架10一個Model2規(guī)范實現(xiàn)的Web框架
視圖層采用JSP實現(xiàn);控制層采用Servlet實現(xiàn),整個框架采用同一個Servlet,以實現(xiàn)請求的中轉(zhuǎn);模型層采用Java實現(xiàn),主要決定用來做什么;在模型層后添加了一個DAO,目的是將決定做什么和具體怎么做分開。整個Web框架大致的流程是:首先客戶端發(fā)送請求,提交JSP頁面給中轉(zhuǎn)器(Servlet);中轉(zhuǎn)器根據(jù)客戶的請求,選擇相應的模型層,即Logic,Logic進行相應的邏輯處理;如果需要使用數(shù)據(jù)庫,則通過DAO進行相應的數(shù)據(jù)庫操作。一個Model2規(guī)范實現(xiàn)的Web框架視圖層采用JSP11SpringMVC
架構(gòu)SpringMVC是結(jié)構(gòu)最清晰的MVCModel2實現(xiàn)。它的處理用戶請求的組件稱做Controller;Controller接收request,response參數(shù),然后返回ModelAndView(其中的Model不是Object類型,而是Map類型)。Controller作用類似于Struts2中的ActionSpringMVC架構(gòu)SpringMVC是結(jié)構(gòu)12SpringWebMVC請求處理流程SpringWebMVC請求處理流程13SpringMVC特點清晰的角色劃分:控制器(controller)、驗證器(validator)、命令對象(commandobject)、表單對象(formobject)、模型對象(modelobject)、Servlet分發(fā)器(DispatcherServlet)、處理器映射(handlermapping)、視圖解析器(viewresolver)等。每一個角色都可以由一個專門的對象來實現(xiàn)。
強大而直接的配置方式:將框架類和應用程序類都能作為JavaBean配置,支持跨多個context的引用,例如,在web控制器中對業(yè)務(wù)對象和驗證器(validator)的引用。可適配、非侵入:可以根據(jù)不同的應用場景,選擇合適的控制器子類(simple型、command型、form型、wizard型、multi-action型或者自定義),而不是從單一控制器(比如Action/ActionForm)繼承。SpringMVC特點清晰的角色劃分:控制器(cont14SpringMVC特點可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的業(yè)務(wù)對象作為命令或表單對象,而不需要去擴展某個特定框架的基類??啥ㄖ频慕壎ǎ╞inding)和驗證(validation):比如將類型不匹配作為應用級的驗證錯誤,這可以保存錯誤的值。再比如本地化的日期和數(shù)字綁定等等。在其他某些框架中,你只能使用字符串表單對象,需要手動解析它并轉(zhuǎn)換到業(yè)務(wù)對象。可定制的handlermapping和viewresolution:Spring提供從最簡單的URL映射,到復雜的、專用的定制策略。與某些webMVC框架強制開發(fā)人員使用單一特定技術(shù)相比,Spring顯得更加靈活。靈活的model轉(zhuǎn)換:在Springweb框架中,使用基于Map的鍵/值對來達到輕易地與各種視圖技術(shù)的集成。SpringMVC特點可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的15SpringMVC特點可定制的本地化和主題(theme)解析:支持在JSP中可選擇地使用Spring標簽庫、支持JSTL、支持Velocity(不需要額外的中間層)等等。簡單而強大的JSP標簽庫(SpringTagLibrary):支持包括諸如數(shù)據(jù)綁定和主題(theme)之類的許多功能。JSP表單標簽庫:在Spring2.0中引入的表單標簽庫,使得在JSP中編寫表單更加容易。SpringBean的生命周期可以被限制在當前的HTTPRequest或者HTTPSession。SpringMVC特點可定制的本地化和主題(theme16
目錄1
SpringMVC
入門簡介2SpringMVC
核心組件3SpringMVC注解
17SpringMVC重要組件
1.springmvc請所有的請求都提交給DispatcherServlet,它會委托應用系統(tǒng)的其他模塊負責負責對請求進行真正的處理工作。
2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
3.DispatcherServlet請請求提交到目標Controller
4.Controller進行業(yè)務(wù)邏輯處理后,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6.視圖對象負責渲染返回給客戶端
SpringMVC重要組件
1.springmvc請所18SpringMVC架構(gòu)類圖
SpringMVC架構(gòu)類圖
19DispatcherServletDispatcherServlet20DispatcherServlet應用了“
FrontController”模式–
是所有SpringMVC請求的中樞。繼承了HttpServlet,是一個Servlet,由WebApplicationContext加載如果不作其它配置,會加載默認組件DispatcherServlet應用了“FrontCo21在web.xml配置DispatcherServlet
<!--配置Springmvc的Dispatcherservlet-->
<servlet>
<servlet-name>dept</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>在web.xml配置DispatcherServlet<22約定優(yōu)于配置<servlet-name>springapp</servlet-name>Sevlet的名字叫做springapp,系統(tǒng)會自動找到spring配置文件的名字為springapp-servlet.xml(會加上–servlet.xml的后綴)約定優(yōu)于配置<servlet-name>springapp23定義控制器類importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servlet.ModelAndView;importorg.springframework.web.servlet.mvc.Controller;publicclassHelloControllerimplementsController{ //返回ModelAndView對象 publicModelAndViewhandleRequest(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException{ //向request域中放入1條信息,給前端jsp用
request.setAttribute("message","hello,springmvc"); //返回jsp的路徑 returnnewModelAndView("hello.jsp"); }}定義控制器類importjavax.servlet.Ser24springapp-servlet.xml配置這個配置中核心語句為:<!--定義用戶請求路徑和對應的響應處理類之間的關(guān)系-->
<beanname="/hello.htm"class="org.newboy.web.HelloController"/>springapp-servlet.xml配置這個配置中核心25jsp頁面<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><title>hellojsp頁面</title></head>
<body>顯示服務(wù)器信息如下:
${requestScope.message}</body></html>訪問hello.htm將會顯示教材圖的結(jié)果頁面jsp頁面<%@pagelanguage="java"26謝謝!謝謝!27第6章SpringMVC入門SpringMVC與MyBatis企業(yè)開發(fā)實戰(zhàn)第6章SpringMVC入門SpringMVC與MyBat28
目錄1SpringMVC
入門簡介目錄1SpringMVC入門簡介29MVC設(shè)計思想MVC即Model-View-Controller,把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
MVC設(shè)計思想MVC即Model-View-Controll30MVC設(shè)計思想MVC是一種復合模式,結(jié)合了觀察者模式、策略模式、組合模式、適配器模式。
模型使用觀察者模式,以便觀察者更新,同時保持兩者之間的解耦。控制器是視圖的策略,視圖使用組合模式實現(xiàn)用戶界面。適配器模式用來將模型適配成符合現(xiàn)有視圖和控制器的需要的模型。
這些模式合作把MVC模式的三層解耦。MVC設(shè)計思想MVC是一種復合模式,結(jié)合了觀察者模式31MVC設(shè)計思想視圖(View)代表用戶交互界面,對于Web應用來說,可以是HTML,也可能是jsp、XML和Applet等。一個應用可能有很多不同的視圖,MVC設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。
MVC設(shè)計思想視圖(View)代表用戶交互界面,對于32MVC設(shè)計思想
模型(Model):是業(yè)務(wù)的處理以及業(yè)務(wù)規(guī)則的制定。模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計是MVC最主要的核心。MVC設(shè)計模式告訴我們,把應用的模型按一定的規(guī)則抽取出來,抽取的層次很重要,抽象與具體不能隔得太遠,也不能太近。MVC并沒有提供模型的設(shè)計方法,而只是組織管理這些模型,以便于模型的重構(gòu)和提高重用性。業(yè)務(wù)模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實體對象的數(shù)據(jù)保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨列出,所有有關(guān)數(shù)據(jù)庫的操作只限制在該模型中。
MVC設(shè)計思想33MVC設(shè)計思想控制(Controller)可以理解為從用戶接收請求,將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接,控制層接受請求后,并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。
MVC設(shè)計思想控制(Controller)可以理解為34Jspmodel1架構(gòu)Model1的基礎(chǔ)是JSP文件,它由一些相互獨立的JSP文件和其他一些JavaClass組成。這些JSP從HTTPRequest中獲得所需要的數(shù)據(jù),處理業(yè)務(wù)邏輯,然后將結(jié)果通過Response返前端瀏覽器。Model1的應該說是唯一的好處是“簡單”,可以大大加快系統(tǒng)的開發(fā)進度。它把表現(xiàn)層和業(yè)務(wù)邏輯層柔和在一起,不利于以后的維護工作以及開發(fā)角色的分配,所以這種模式只能適合于小的系統(tǒng)開發(fā)。Jspmodel1架構(gòu)Model1的基礎(chǔ)是JS35Jspmodel2架構(gòu)
Model2采用面向?qū)ο蠹夹g(shù)實現(xiàn)MVC模式從而擴展JSP/Servlet的模式。Model2是MVC在Web上的應用。Jspmodel2架構(gòu)Model2采用面向?qū)?6一個Model2規(guī)范實現(xiàn)的Web框架一個Model2規(guī)范實現(xiàn)的Web框架37一個Model2規(guī)范實現(xiàn)的Web框架
視圖層采用JSP實現(xiàn);控制層采用Servlet實現(xiàn),整個框架采用同一個Servlet,以實現(xiàn)請求的中轉(zhuǎn);模型層采用Java實現(xiàn),主要決定用來做什么;在模型層后添加了一個DAO,目的是將決定做什么和具體怎么做分開。整個Web框架大致的流程是:首先客戶端發(fā)送請求,提交JSP頁面給中轉(zhuǎn)器(Servlet);中轉(zhuǎn)器根據(jù)客戶的請求,選擇相應的模型層,即Logic,Logic進行相應的邏輯處理;如果需要使用數(shù)據(jù)庫,則通過DAO進行相應的數(shù)據(jù)庫操作。一個Model2規(guī)范實現(xiàn)的Web框架視圖層采用JSP38SpringMVC
架構(gòu)SpringMVC是結(jié)構(gòu)最清晰的MVCModel2實現(xiàn)。它的處理用戶請求的組件稱做Controller;Controller接收request,response參數(shù),然后返回ModelAndView(其中的Model不是Object類型,而是Map類型)。Controller作用類似于Struts2中的ActionSpringMVC架構(gòu)SpringMVC是結(jié)構(gòu)39SpringWebMVC請求處理流程SpringWebMVC請求處理流程40SpringMVC特點清晰的角色劃分:控制器(controller)、驗證器(validator)、命令對象(commandobject)、表單對象(formobject)、模型對象(modelobject)、Servlet分發(fā)器(DispatcherServlet)、處理器映射(handlermapping)、視圖解析器(viewresolver)等。每一個角色都可以由一個專門的對象來實現(xiàn)。
強大而直接的配置方式:將框架類和應用程序類都能作為JavaBean配置,支持跨多個context的引用,例如,在web控制器中對業(yè)務(wù)對象和驗證器(validator)的引用??蛇m配、非侵入:可以根據(jù)不同的應用場景,選擇合適的控制器子類(simple型、command型、form型、wizard型、multi-action型或者自定義),而不是從單一控制器(比如Action/ActionForm)繼承。SpringMVC特點清晰的角色劃分:控制器(cont41SpringMVC特點可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的業(yè)務(wù)對象作為命令或表單對象,而不需要去擴展某個特定框架的基類??啥ㄖ频慕壎ǎ╞inding)和驗證(validation):比如將類型不匹配作為應用級的驗證錯誤,這可以保存錯誤的值。再比如本地化的日期和數(shù)字綁定等等。在其他某些框架中,你只能使用字符串表單對象,需要手動解析它并轉(zhuǎn)換到業(yè)務(wù)對象??啥ㄖ频膆andlermapping和viewresolution:Spring提供從最簡單的URL映射,到復雜的、專用的定制策略。與某些webMVC框架強制開發(fā)人員使用單一特定技術(shù)相比,Spring顯得更加靈活。靈活的model轉(zhuǎn)換:在Springweb框架中,使用基于Map的鍵/值對來達到輕易地與各種視圖技術(shù)的集成。SpringMVC特點可重用的業(yè)務(wù)代碼:可以使用現(xiàn)有的42SpringMVC特點可定制的本地化和主題(theme)解析:支持在JSP中可選擇地使用Spring標簽庫、支持JSTL、支持Velocity(不需要額外的中間層)等等。簡單而強大的JSP標簽庫(SpringTagLibrary):支持包括諸如數(shù)據(jù)綁定和主題(theme)之類的許多功能。JSP表單標簽庫:在Spring2.0中引入的表單標簽庫,使得在JSP中編寫表單更加容易。SpringBean的生命周期可以被限制在當前的HTTPRequest或者HTTPSession。SpringMVC特點可定制的本地化和主題(theme43
目錄1
SpringMVC
入門簡介2SpringMVC
核心組件3SpringMVC注解
44SpringMVC重要組件
1.springmvc請所有的請求都提交給DispatcherServlet,它會委托應用系統(tǒng)的其他模塊負責負責對請求進行真正的處理工作。
2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
3.DispatcherServlet請請求提交到目標Controller
4.Controller進行業(yè)務(wù)邏輯處理后,會返回一個ModelAndView
5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
6.視圖對象負責渲染返回給客戶端
SpringMVC重要組件
1.springmvc請所45SpringMVC架構(gòu)類圖
SpringMVC架構(gòu)類圖
46DispatcherServletDispatcherServlet47DispatcherServlet應用了“
FrontController”模式–
是所有SpringMVC請求的中樞。繼承了HttpServlet,是一個Servlet,由WebApplicationContext加載如果不作其它配置,會加載默認組件DispatcherServlet應用了“FrontCo48在web.xml配置DispatcherServlet
<!--配置Springmvc的Dispatcherservlet-->
<servlet>
<servlet-name>dept</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>在web.xml配置DispatcherServlet<49約定優(yōu)于配置<servlet-name>springapp</servlet-name>Sevlet的名字叫做
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 休完產(chǎn)假年終總結(jié)
- 數(shù)控車削加工技術(shù) 教案 項目五 數(shù)控車床的操作
- 15.5 串、并聯(lián)電路中電流的規(guī)律(4大題型)(含答案解析)
- 初中八年級語文上學期期中考前測試卷含答案解析
- 中國跨境雙向并購與招商引資案例報告
- T-YNRZ 021-2024 珠芽黃魔芋高產(chǎn)種植技術(shù)規(guī)程
- 【課件】Unit+3+SectionB+Writing+課件人教版英語七年級上冊
- 高效脫磷河鋼集團李建新
- 高中物理第十八章原子結(jié)構(gòu)3氫原子光譜課件新人教版選修3-
- 信息技術(shù)(第2版)(拓展模塊)教案 拓展模塊5 5.5應用開發(fā)實例2
- 建筑工程初步設(shè)計文件審查要點
- 《律師參與公司自行清算業(yè)務(wù)操作指引》
- 引水工程施工設(shè)計方案
- 四氫呋喃項目可行性研究報告-用于立項備案
- 部編版《道德與法治》五年級下冊第8課《推翻帝制 民族覺醒》優(yōu)質(zhì)課件
- Q∕GDW 11514-2021 變電站智能機器人巡檢系統(tǒng)檢測規(guī)范
- 基坑支護工程(技術(shù)標圖文)
- 汽車美容裝飾行業(yè)員工提成方案
- 布纜船操作規(guī)程
- 鴻業(yè)市政道路9.0實例教學視頻課程
- 食品快檢結(jié)果記錄表
評論
0/150
提交評論