




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中韓合同范例
- ipfs礦機合同范例
- 以患者為中心的醫療健康大數據服務模式探索
- 醫療AI決策中的患者自主權探討
- 高中生個人軍訓心得體會模版
- 產業投資協議合同范例
- 實習教師個人總結模版
- 中醫院工作總結模版
- 醫療教育領域的創新教學方法與實踐
- 人教版英語8年級(下冊)目錄及單元詳解經典總結模版
- 《臨床免疫學檢測技術》課件
- 2024年河南鄭州航空港投資集團招聘真題
- 2025專利代理師筆試考試題庫有答案分析
- 2025-2030中國高拍儀行業市場發展分析及前景趨勢與投資研究報告
- 中考語文課內文言文閱讀專題復習練習
- 危重癥患者體位管理
- 湖南省名校聯考聯合體2024-2025學年高一下學期期中考試地理試題 含答案
- 2025春粵教粵科版(2024)小學科學一年級下冊(全冊)教案、教學反思、教學計劃(附教材目錄P103)
- 洗浴合同協議模板
- 2025年陜西高中學業水平合格考數學試卷及答案
- 2025年天津市紅橋區中考第一次模擬考試物理試卷(含答案)
評論
0/150
提交評論