SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結_第1頁
SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結_第2頁
SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結_第3頁
SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結_第4頁
SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第SpringMVC集成Web與MVC執行流程和數據響應及交互相關介紹全面總結目錄前言一.Spring集成Web二.對于SpringMVC的理解三.MVC執行流程1.組件解析2.RequestMapping四.SpringMVC數據響應頁面跳轉回寫數據五.SpringMVC獲得請求數據

前言

SpringMVC確實很麻煩,零碎的點太多

一.Spring集成Web

在Spring的學習中,我們知道在IOC容器中獲取Bean時要通過獲取上下文的方式

(newClasspathXmlApplicationContext),這樣我想在不同的地方獲取Bean我得重新加載配置文件,應用上下文的對象也被創建了多次,造成所謂的硬編碼問題。

如何解決?

按照思維習慣,解決此問題的最好方法就是把我的配置文件作用域提高

在Web項目中,可以使用ServletContextListener監聽Web應用的啟動,我們可以在Web應用啟動時,就加載Spring的配置文件,創建應用上下文對象ApplicationContext,在將其存儲到最大的域servletContext域中,這樣就可以在任意位置從域中獲得應用上下文ApplicationContext對象了,從而實現數據共享。

如何實現?

①導入Spring集成Web坐標

dependency

groupIdorg.springframework/groupId

artifactIdspring-web/artifactId

version5.3.5.RELEASE/version

/dependency

②配置ContextLoaderListener監聽器

Spring提供了一個監聽器ContextLoaderListener就是對上述功能的封裝,該監聽器內部加載Spring配置文件,創建應用上下文對象,并存儲到ServletContext域中,提供了一個客戶端工具WebApplicationContextUtils供使用者獲得應用上下文對象

listener

listener-classorg.springframework.web.context.ContextLoaderListener/listener-class

/listener

③通過工具獲得應用上下文對象

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

ServletContextservletContext=this.getServletContext();

ApplicationContextapp=WebApplicationContextUtils.getWebApplicationContext(servletContext);

UserServiceuserService=app.getBean(UserService.class);

補充:為了解決xml文件名稱與代碼產生的耦合,引入了設置全局變量這一操作,通過在web.xml里事先定義好后再由具體的的代碼獲得定義的參數名來讀文件,極大降低了耦合性

這樣的話以后要改配置文件我就可以直接在一處修改文件名即可

二.對于SpringMVC的理解

Mmodel進行業務邏輯的處理

Vview視圖,負責數據的輸出,畫面的展示

Ccontroller負責接收從視圖發送過來的數據,同時控制model與view

SpringMVC是是屬于SpringFramework生態里面的一個模塊,它是在Servlet基礎上構建并且使用MVC模式設計的一個Web框架,主要的目的是簡化傳統Servlet+JSP模式下的Web開發方式。其次,SpringMVC的整體架構設計對JavaWeb里面的MVC架構模式做了增強和擴展,主要有幾個方面。把傳統MVC框架里面的Controller控制器做了拆分,分成了前端控制器DispatcherServlet和后端控制器Controller,把Model模型拆分成業務層Service和數據訪問層Repository。

在視圖層,可以支持不同的視圖,比如Freemark、velocity、JSP等等

所以,SpringMVC天生就是為了MVC模式而設計的,因此在開發MVC應用的時候會更加方便和靈活。

三.MVC執行流程

客戶端與服務器端的一次會話代表著一次請求與響應,通過MVC的模式使其更加系統

具體執行流程如下所示:

①用戶發送請求至前端控制器DispatcherServlet

②DispatcherServlet收到請求調用HandlerMapping處理器映射器

③處理器映射器找到具體的處理器(可以根據xml配置、注解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet

④DispatcherServlet調用HandlerAdapter處理器適配器

⑤HandlerAdapter經過適配調用具體的處理器(Controller,也叫后端控制器)

⑥Controller執行完成返回ModelAndView

⑦HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet

⑧DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器

⑨ViewReslover解析后返回具體View

⑩DispatcherServlet根據View進行渲染視圖〈即將模型數據填充至視圖中),DispatcherServlet響應用戶

1.組件解析

1.前端控制器:DispatcherServlet

用戶請求到達前端控制器,它就相當于MVC模式中的C,DispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,DispatcherServlet的存在降低了組件之間的耦合性

2.處理器映射器:HandlerMapping

HandlerMapping負責根據用戶請求找到Handler即處理器,SpringMVC提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,注解方式等

3.處理器適配器:HandlerAdapter

通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行

4.處理器:Handler

它就是我們開發中要編寫的具體業務控制器。由DispatcherServlet把用戶請求轉發到Handler。由Handler對具體的用戶請求進行處理

5.視圖解析器:ViewResolver

ViewResolver負責將處理結果生成View視圖,ViewResolver首先根據邏輯視圖名解析成物理視圖名,即具體的頁面地址,再生成View視圖對象,最后對View進行渲染將處理結果通過頁面展示給用戶

6.視圖:View

SpringMVC框架提供了很多的View視圖類型的支持,包括:jstlView、freemarkerView.pdfView等。最常用的視圖就是jsp。一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由程序員根據業務需求開發具體的頁面

2.RequestMapping

作用:用于建立請求URL和處理請求方法之間的對應關系

位置:

類上,請求URL的第一級訪問目錄。此處不寫的話,就相當于應用的根目錄

方法上,請求URL的第二級訪問目錄,與類上的使用@ReqquestMapping標注的一級目錄一起組成訪問虛擬路徑屬性:

value:用于指定請求的URL。它和path屬性的作用是一樣的method:用于指定請求的方式

params:用于指定限制請求參數的條件。它支持簡單的表達式。要求請求參數的key和value必須和配置的一模一樣

四.SpringMVC數據響應

頁面跳轉

1.直接返回字符串,本質是在配置文件里寫好頭和尾,在具體的代碼中返回文件名后跳轉

2.返回ModelAndView對象

publicModelAndViewback(){

//Model:模型作用封裝數據,View:視圖作用展示數據

ModelAndViewmodelAndView=newModelAndView();

modelAndView.addObject("username","itcast");//設置模型數據

modelAndView.setViewName("hello");//設置視圖名稱

returnmodelAndView;

頁面跳轉的方式還有,比如向request域存儲數據后返回對象

回寫數據

1.直接輸出字符串

publicvoidback(HttpServletResponseresponse)throwsIOException{

response.getWriter().print("HelloJava");

2.寫注解直接返回字符串

@ResponseBody//告知SpringMVC框架不進行視圖跳轉直接進行數據響應

publicStringback()throwsIOException{

return"hellojava";

3.返回對象或者集合

事先要配置SpringMVC注解驅動mvc:annotation-driven/默認底層就會集成Jackson進行對象集合與json格式字符串的轉換

@ResponseBody

publicSheepback()throwsIOException{

Sheepsheep=newSheep();

sheep.setUsername("懶羊羊");

sheep.setAge(2);

returnsheep;//SpringMVC自動將Sheep轉換成json格式的字符串

五.SpringMVC獲得請求數據

1.獲得基本數據類型,形如:

@RequestMapping(value="/resp")

@ResponseBody

publicvoidsave11(Stringusername,intage)throwsIOException{

System.out.println(username);

System.out.println(age);

然后我在URL中輸入相應的路徑,傳入相應的參數即可獲得請求的數據

http://localhost:yu7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論