第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
2. 前期準(zhǔn)備

欲善其功,必先利其器。使用 Spring MVC 之前,準(zhǔn)備好一系列的工具軟件。操作系統(tǒng): 可以選擇 WIndows 或 Liunx 、MAC 。本課程選擇 WIndows 操作系統(tǒng);IDE 工具: 本課程選擇 eclipse。這不是唯一、強制的要求,你可以選擇自己喜歡的開發(fā)工具;JAVA JDK : 這個不用多說,它是必須的。本文選擇 JDK 1.8+;服務(wù)器組件: 本文選擇 tomcat 8.X?;?Spring MVC 的開發(fā)本質(zhì)還是編寫 JAVA 程序,區(qū)別在于 Spring MVC 提供了更高級層面的 API 組件。所以,開發(fā)時需要在項目中添加 Spring MVC 相關(guān)的 API 包。有 2 種方案可獲取這些 JAR 依賴包:進入 https://repo.spring.io/release/org/springframework/spring/5.1.13.RELEASE/,下載相對應(yīng)的 JAR 包。除了要在項目中添加 Spring MVC 相關(guān) JAR 包外,還需要添加 Spring 相關(guān) JAR 包。對于初學(xué)者來講有一定的難度;Tips: 本課程采用 Spring Framework 5.1.13 版本。使用 Maven 依賴管理功能自動添加 Spirng MVC 項目所需要的依賴包。本課程使用此方案。

Spring MVC 簡介

spring 官方 logo

4.1 編寫控制器

Spring MVC 提供了很靈活的用戶控制器編寫方案。通過實現(xiàn) Spring MVC 提供的 org.springframework.web.servlet.mvc.Controller 接口;public class HelloAction implements org.springframework.web.servlet.mvc.Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("Bean URL "); return null; }}Spring MVC 支持 POJO (普通 JAVA 類)充當(dāng)控制器。public class HelloAction { public String hello() { return "hello"; }}Tips: 使用 POJO 充當(dāng)用戶控制器,顯然要簡潔很多。這是常見的編寫方案。

3.2 調(diào)度中心

一次請求、響應(yīng)的完成,需要多個組件通力合作。如何協(xié)調(diào)各個組件的工作,保證請求、響應(yīng)過程有條不紊的進行,則需要一個指揮者或說一個核心靈魂組件。DispatcherServlet 就是每一次請求、響應(yīng)過程中的組織者、調(diào)度者。Tips: DispatcherServlet 本質(zhì)就是一個和 Spring MVC 程序一起啟動的 Servlet 。在現(xiàn)有的 MVC 框架,如 Struts MVC 中使用過濾器作為前端控制器。

3. Django 簡介

Django 是一個開放源代碼的 Web 應(yīng)用框架,由 Python 寫成,它最初是被開發(fā)來用于管理一些以新聞內(nèi)容為主的網(wǎng)站,即是CMS(內(nèi)容管理系統(tǒng))軟件。Django 是一個遵循 MVC 設(shè)計模式的框架。MVC 是 Model、View、Controller 三個單詞的簡寫,分別代表模型、視圖、控制器。Django 也是一個 遵循 MVC 設(shè)計模式的框架。MTV 是 Model、Template、View 三個單詞的簡寫,分別代表模型、模版、視圖 。

2. 適配器

所謂適配器組件,其本質(zhì)就是運用適配器設(shè)計模式,匹配不兼容的接口規(guī)范。如上圖,調(diào)用者只能識別接口 2 類型,但是 A 提供的是接口 1 類型。適配器可以把接口 1 轉(zhuǎn)換成接口 2。這樣使用者就能使用 A 提供的功能了。為什么要使用適配器組件?欲解答這個問題,則先要了解如果不使用適配器組件,則如何編寫用戶控制器。既然稱為用戶控制器,則是開發(fā)者根據(jù)需要在框架外部定義的一個組件,Spring MVC 不可能未卜先知它的存在。如果要讓 Spring MVC 識別這個控制器,有一種方案 :預(yù)先定義好接口,強制性要求開發(fā)者在設(shè)計控制器時遵循接口規(guī)范。比如說實現(xiàn) Controller 接口編寫控制器。@Controllerpublic class HelloAction implements org.springframework.web.servlet.mvc.Controller {public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { return null;}}除此之外,Spriing MVC 提供有更靈活的用戶控制器設(shè)計方案,可使用 “ 普通 JAVA 類” 充當(dāng)控制器,控制器中的方法也可由開發(fā)者隨性命名。此時,就需要適配器組件把這些不符合規(guī)范的控制器以統(tǒng)一的接口方式告訴給 Spring MVC 。Spring MVC 提供了 3 個默認適配器:org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\ org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\ org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter這些適配對象都實現(xiàn)了 HandlerAdapter 接口,此接口就有一個統(tǒng)一的內(nèi)部調(diào)用方法。@NullableModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;簡要描述 3 個適配器的應(yīng)用場景:SimpleControllerHandlerAdapter: 簡單的控制器處理器適配器,支持實現(xiàn)了 Controller 接口的控制器;HttpRequestHandlerAdapter: http 請求處理器適配器,要求編寫的控制器時實現(xiàn) HttpRequestHandler 接口。此類控制器可以很方便的獲取請求包中的相關(guān)信息。但,真正使用的并不多;RequestMappingHandlerAdapter: 注解處理器適配器,適配使用了注解的用戶控制器。本課程中的就是使用了此適配器,此適配器的實現(xiàn)比前兩個都復(fù)雜。因為有適配器的存在,可以讓控制器的設(shè)計變得靈活。Tips: 這 3 類適配器都是 Spring MVC 默認提供的,可以不用顯示配置,除非有定制需求。

1. 前言

本章節(jié)將和大家一起聊聊 Spring MVC 是如何處理異常的。Spring MVC 框架中,將異常處理從業(yè)務(wù)邏輯中解耦出來,既保證了業(yè)務(wù)邏輯高度內(nèi)聚性,又能實現(xiàn)了異常信息的統(tǒng)一處理和維護。很優(yōu)雅的解決了異常的問題。通過本章節(jié)內(nèi)容的學(xué)習(xí),你將了解到 Spring MVC 內(nèi)置的異常處理機制。將異常映射成 HTTP 狀態(tài)碼;全局異常處理器的使用。這個將是本章節(jié)的重點;與異常有關(guān)的注解。

4. 小結(jié)

本章節(jié)和大家一起講解視圖技術(shù)。每一種視圖技術(shù)都會有自己的模板語法,且模板需要經(jīng)過模板引擎解析后才能輸送給瀏覽器。Spring MVC 支持多種視圖技術(shù),本章節(jié)向大家介紹了在 Spring MVC 中如何使用 FreeMarker 視圖。一般在配置過程中需要指定模板文件的位置,以及指定具體的模板引擎實現(xiàn)。在本章節(jié)內(nèi)容環(huán)節(jié)中也告訴了大家在 Spring MVC 中如何混合使用 JAVA 和 XML 兩種配置方案。

3. 前端控制器

深入了解前端控制器之前,先拋出一個問題:控制器是什么?別被控制器這個名字嚇住。其實和原生 Servlet 開發(fā)中開發(fā)者自定義的 Servlet 的功能是一樣的。當(dāng)然,因為有 Spring 的加持,使用起來,是非常之輕量級的。Spring MVC 中的控制器有 2 類:中央控制器,或叫前端控制器: 由 Spring MVC 框架提供,對所有請求進行分流;用戶控制器,或叫響應(yīng)控制器: 由開發(fā)者實現(xiàn),用來響應(yīng)用戶的具體請求。如登錄請求、注冊請求……前端控制器(DispatcherServlet)是 Spring MVC 中最核心的組件,相當(dāng)于整個程序中的行政、調(diào)度中心。其它的組件都是它的附庸,為前端控制器提供相關(guān)的服務(wù)。Tips: DispatcherServlet 必須在 Spring MVC 項目啟動時被創(chuàng)建。DispatcherServlet 的純 JAVA 配置請查閱《純 JAVA 搭建 Spring MVC 項目》章節(jié)內(nèi)容。DispatcherServlet 的基本功能。

2. Servlet API

使用 Spring MVC 框架,可以給開發(fā)者帶來諸多便利性,如自動綁定請求包中的數(shù)據(jù)、自動數(shù)據(jù)驗證……在 Spring MVC 構(gòu)建的 WEB 項目中,其實也可以直接使用原生的 Servlet API 。但在真實項目中,還是少用為好,畢竟項目是有工期的。快速迭代是現(xiàn)代項目開發(fā)所追求的目標(biāo),這也是開發(fā)過程中選擇框架的目的。但是,了解本章節(jié)的知識,對于更好的理解 Spring MVC 有很大的幫助。先一起回憶幾個常用的 Srevlet API:HttpServletRequest: 用來處理請求包;HttpServletResponse: 用來處理響應(yīng)包;HttpSession: 會話對象;ServletConfig: 配置對象;ServletContext: Servlet 上下文對象。這幾個 API 應(yīng)該很熟悉。因為 Spring MVC 對原生 Servlet API 進行了高級封裝,使用 Spring MVC 開發(fā)時,開發(fā)者不需要直接使用原生 API ,但并不意味著我們不再需要它們,只是換了一種方式使用而已,由 Spring MVC 內(nèi)部組件使用它們。Spring MVC 雖然封裝了底層 Servlet API 的使用,但并沒有切斷開發(fā)者直接對原生 Servlet API 的調(diào)用之路。對于需要使用原生 Servlet API 的場景,Spring MVC 提供了各種方便。只需要在控制器的方法中聲明需要使用的原生 API 類型做參數(shù)即可。@RequestMapping("/testApi01")public String hello(HttpServletRequest request,HttpServletResponse response) { return "success";}這一切都應(yīng)該要感謝 Spring 強大的依賴注入功能??梢哉f,在 Spring 的世界里,你想要什么就有什么。調(diào)用上面方法時,Spring 就會注入你所需要的 API 對象。至于在方法中如何使用它,相信你一定已經(jīng)游刃有余。如果你需要使用更多的原生 API。如上面代碼一樣,在方法參數(shù)中告訴 Spring 你所需要的 API 類型就可以了。@RequestMapping("/testApi02")public String hello(HttpSession session) { return "success";}

1. 前言

本節(jié)課和大家一起聊聊 Spring MVC 支持的主流視圖技術(shù)。通過本章節(jié)內(nèi)容的學(xué)習(xí),你將對視圖解析器有更本質(zhì)的理解。也將了解到 Spring MVC 支持哪些主流視圖解析器。重點是要掌握各種視圖解析器的配置。

1. 前言

本章節(jié)將向大家講解 Thymeleaf 視圖技術(shù) 。Thymeleaf 和 Spring MVC 或 Spring Boot 有著較完美的契合度,是 Spring 官方建議的首選視圖技術(shù)。通過本節(jié)章節(jié),你將學(xué)習(xí)到:Spring MVC 中如何使用 Thymeleaf 。這是本章節(jié)的重點也是難點;Thymeleaf 的特點;

1. 前言

本節(jié)課,將和大家一起聊聊 Spring MVC 在不同的作用域中如何封裝數(shù)據(jù)。繼續(xù)之前,先理解本節(jié)課程提出的數(shù)據(jù)模型概念:Spring MVC 提供的在特定作用域內(nèi)封裝數(shù)據(jù)的組件。掌握理解數(shù)據(jù)模型組件的使用便是全文重點。

3.2 配置視圖解析器

視圖解析器需要在 Spring MVC 項目中顯示配置,Spring MVC 雖然提供了視圖解析器,但它不可能知道開發(fā)者會把物理視圖放在哪個位置,所以,需要通過配置指定物理視圖的真正位置。配置 InternalResourceViewResolver 很簡單。打開 WebConfig 配置類,在配置類中添加如下代碼;@Beanpublic InternalResourceViewResolver viewResolver() { InternalResourceViewResolver inResolver=new InternalResourceViewResolver(); inResolver.setPrefix("/WEB-INF/jsp/"); inResolver.setSuffix(".jsp"); return inResolver;}解釋一下上面的代碼:@Bean 注解表示此對象由 Spring 容器創(chuàng)建;inResolver.setPrefix ("/WEB-INF/jsp/") 表示 JSP 頁面視圖所在物理位置;inResolver.setSuffix (".jsp") 表示 JSP 視圖的后綴。Tips : 如果控制器中返回的是 “hello” 字符串,經(jīng)視圖解析器解析后,則認為對應(yīng)的物理視圖是 “/WEB-INF/jsp/hello.jsp”需要保證存在這個文件,否則瀏覽器上就會出現(xiàn) 404 錯誤。Ok 按要求在項目的 WEB-INF 目錄下創(chuàng)建 jsp 目錄,再在此目錄下創(chuàng)建名為 hello.jsp 文件,并編輯內(nèi)容。再次在瀏覽器中輸入:http://localhost:8888/sm-demo/hello 。你會看到:Spring MVC 除了支持 JSP 視圖,還支持其它如:freemarker、thymeleaf 等視圖技術(shù)。會另設(shè)專題講解。

2.1 CAS 服務(wù)端

CAS 服務(wù)端是一套基于 Spring 框架構(gòu)建的應(yīng)用系統(tǒng),是實現(xiàn) SSO 的核心構(gòu)成。其軟件層面可分為三個層次:Web 服務(wù)(Spring MVC、Spring Webflow)票據(jù)認證系統(tǒng)

2.1 攔截器的工作位置

Spring MVC 中的攔截器和 Servlet 中的過濾器的生命周期、以及服務(wù)的目標(biāo)有差異性。過濾器的生命周期由服務(wù)器維護,當(dāng)請求包進入服務(wù)器或響應(yīng)包即將離開服務(wù)器時,過濾器將起作用。過濾器是在 DispatcherServlet 之前或之后工作,攔截器是請求經(jīng)過 DispatcherServlet 后進行攔截。攔截器屬于 Spring MVC 組件,生命周期由 Spring 上下文容器對象維護。從細節(jié)上講,攔截器可以在用戶控制器之前、之后或視圖渲染完成之后行使攔截工作。

1. 前言

本節(jié)課程和大家一起講解 Spring MVC 框架是如何跨請求傳遞數(shù)據(jù)的,讓數(shù)據(jù)在重定向期間能被讀出來。你需要重點掌握對 RedirectAttributes 組件的使用。

2. 組件概述

現(xiàn)代企業(yè)項目,都是基于模塊或組件開發(fā)。Spring MVC 項目也是嚴格遵循這種約定和規(guī)范。WEB 應(yīng)用程序的交互模式是基于請求與響應(yīng)的。在請求、響應(yīng)過程中,Spring MVC 不是一個人在戰(zhàn)斗,而是提供了眾多的組件一起協(xié)調(diào)工作。先請出 Spring MVC 中的 5 大核心組件,并用一句話概括其功能?;靷€眼熟,具體功能描述及使用方式在后面慢慢展開。前端控制器: 類似于超市的入口;用戶控制器: 類似于不同類型的貨品架,為用戶提供具體的商品買賣;映射器: 類似于超市里的導(dǎo)購員。請問,我要的這個牌子的辣椒醬在哪里,哦,在這里;適配器: 統(tǒng)一控制器,讓其有一致對外的接口;視圖解析器: 找到視圖,并負責(zé)渲染視圖。除了這幾大核心組件,還有其它的諸多輔助性組件,當(dāng)使用到時再逐一介紹。

3.1 視圖解析器的功能

要講解視圖解析器,則需要回溯到用戶控制器上。@RequestMapping("/hello")public String hello() { return "hello";}用戶控制器中的方法的返回值可以是字符串,如果沒有視圖解析器的解析,這個字符串就是一個字符串。如果有了視圖解析器,則會把這個字符串當(dāng)成一個視圖的邏輯名,并映射到真正的物理視圖。Tips:視圖解析器和映射器的有相似之處,映射器是入口時根據(jù)請求控制器邏輯名找到物理控制器,視圖解析器是出口時根據(jù)視圖邏輯名找到物理視圖。Spring MVC 默認使用的 InternalResourceViewResolver 作為視圖解析器, 提供對 JSP 視圖的支持。org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver無論是 Spring MVC 默認提供的、還是開發(fā)者自行定義的視圖解析器,都必須實現(xiàn) ViewResolver 接口:public interface ViewResolver { @Nullable View resolveViewName(String viewName, Locale locale) throws Exception;}為什么不在用戶控制器的方法中直接返回物理視圖(完整資源路徑描述),而是使用視圖解析映射物理位置?答案很簡單:控制器中的響應(yīng)代碼不需要知道視圖的具體物理位置,通過視圖解析器解耦控制器對視圖物理位置的依賴;通過獨立的視圖解組件可以擴展 Spring MVC 對各種不同視圖技術(shù)的支持。Spring MVC 就支持多達 13 種視圖技術(shù);簡化控制器中的響應(yīng)代碼;

1. 前言

實現(xiàn)文件上傳有很多方案。如使用原始的 IO 流或者使用第三方上傳插件。Spring MVC 自帶有文件上傳組件,能很容易地實現(xiàn)文件上傳功能。本節(jié)課程將和大家一起講解 Spring MVC 是如何處理文件上傳的。通過本章節(jié)內(nèi)容的學(xué)習(xí),你將掌握使用 MultipartResolver 相關(guān)組件簡單的實現(xiàn)文件上傳。

1. 前言

本章節(jié)將和大家一起講解如何使用 XML 方式搭建 Spring MVC 項目。雖然現(xiàn)在的快速開發(fā)平臺越來越好用,零 XML 配置的理念逐漸流行,但還是有些項目組還在延用或習(xí)慣使用 XML 方式。本節(jié)課的重點是你需要掌握使用 XML 配置的流程,最好和本系列的《純 JAVA 搭建 Spring MVC 項目》對比學(xué)習(xí)。

1. 前言

Spring MVC 框架的目的是為了解放開發(fā)者,讓開發(fā)者更專注于核心邏輯,它提供了很多輔助性功能模塊,來提高開發(fā)者的開發(fā)效率。本節(jié)課將和大家一起講解 Spring MVC 是如何使用下面的幾個注解解析請求包中的數(shù)據(jù)。@RequestParam ;@CookieValue;@RequestHeader;@PathVariable 。本章節(jié)的重點就是你要記住它們的使用場景。

3.3 兩個上下文對象

Spring 提供了很厲害的 IOC & DI 工廠,這個工廠對象在 web 項目中的具體名稱叫 WebApplicationContext,也稱其為上下文對象,用來創(chuàng)建 Spring MVC 項目中的各色功能組件。所以,欲使用 Spring MVC,則先要想辦法創(chuàng)建上下文對象。Spring 建議 Spring MVC 項目中提供 2 個 WebApplicationContext 對象:一個 WebApplicationContext 對象用來創(chuàng)建 Spring MVC 相關(guān)的組件,稱其為 Web 上下文對象 ;一個用來創(chuàng)建程序中其它的具體功能組件(如邏輯組件、數(shù)據(jù)層訪問組件……),稱其為 Root (根)上下文對象 。兩個上下文對象各自負責(zé)的組件范圍如果只創(chuàng)建一個 WebApplicationContext 對象會產(chǎn)生什么結(jié)果?如果僅僅是測試、學(xué)習(xí),從初期來看,沒有什么不可。從長遠來看,建議還是聽從建議。Tips: 這兩個 WebApplicationContext對象存在底層上的差異性。一個支持事務(wù),另一個不支持。有各自的職責(zé)。Spring MVC 提供了一個叫 DispatcherServlet 的組件(本質(zhì)就是一個 Servlet),此組件用來作為進入程序的唯一入口。是 Spring MVC 項目的“門神”。Tips: 可稱 DispatcherServlet 為中央控制器或前端控制器。好了!現(xiàn)在理一下頭緒:一定要在整個項目運作之前先讓 DispatcherServlet 組件開始工作,DispatcherServlet 除了充當(dāng)門神外,還會創(chuàng)建一個與自己有關(guān)聯(lián)的 WebApplicationContext 工廠對象,即 Web 上下文對象;Spring 另提供有名為 ContextLoaderListener 的監(jiān)聽器組件,它可以監(jiān)聽程序的啟動過程,并在程序啟動時創(chuàng)建另一個 WebApplicationContext 工廠對象,即 Root 上下文對象。

3. 自定義攔截器

Spring MVC 內(nèi)置有很多攔截器。這些攔截器提供的功能,基本上能夠滿足開發(fā)者完成常規(guī)開發(fā)。但是,需求總是瞬息變化的,開發(fā)者可以根據(jù)自己的業(yè)務(wù)需求自定義攔截器。

6. 小結(jié)

本節(jié)課和大家一起講解了 Spring MVC 中的 前端控制器、用戶控制器、映射器的功能及使用方式 。其它的幾個核心組件將在下一章節(jié)中和大家一一展開。一個完整的 Spring MVC 項目不僅僅只依靠這幾大組件,還有更多的組件在后臺默默地付出著。隨著學(xué)習(xí)的深入,這些組件也將會逐步出現(xiàn)在大家面前。

2.1 返回字符串

給出一個控制器的實例代碼,這個代碼很普通,不同之處在于方法前面使用了 @ResponseBody 注解。 于是,這個方法的命運被改變了。@Controller@RequestMapping("/json")public class JsonAction { @RequestMapping("/test01") @ResponseBody public String testJson() { return "Hello"; }}控制器方法有 @ResponseBody 注解和沒有此注解,Spring MVC 對控制器方法的返回值的理解迥然不同。沒有 @ResponseBody 注解:Spring MVC 會把返回值 “hello” 理解為視圖邏輯名,通過視圖解析器找到視圖物理位置;有 @ResponseBody 注解: Spring MVC 會把返回值直接寫入響應(yīng)包后交給瀏覽器。意味著不需要視圖解析器的參與。測試一下上面實例。打開瀏覽器,在地址欄上輸入:http://localhost:8888/sm-demo/json/test01 。你在瀏覽器將看到如下圖所示結(jié)果:

3. 小結(jié)

本節(jié)課和大家一起學(xué)習(xí)了 Spring MVC 中的數(shù)據(jù)模型。所謂數(shù)據(jù)模型,就是用來裝數(shù)據(jù)的組件,當(dāng)然,因 WEB 應(yīng)用程序的特殊性,更多是要討論存放在這個組件中的數(shù)據(jù)在一個什么樣的范圍之內(nèi)能夠被使用。本節(jié)課學(xué)習(xí)到了,可以直接使用原生的 HttpServletRequest 完成請求作用域數(shù)據(jù)的存儲,觸類旁通,當(dāng)然,你也可以直接使用原生 HttpSession 對象,保存會話作用域級別數(shù)據(jù)的保存。有時,不需要為了吃一個桃子,砍掉一棵樹。開發(fā)者可以使用 Spring MVC 引用出內(nèi)部的存儲對象,這樣更小巧實用。是的,本節(jié)課程中出現(xiàn)的 map 是 Spring MVC 中的數(shù)據(jù)模型組件。

5. 映射器

映射器的作用就是檢查用戶的請求路徑中是否存在對應(yīng)的控制器組件。Tips: 有點類似于導(dǎo)購員??蛻魣笠粋€商品名,然后告訴你真正的商品所在位置。使用 Spring MVC 時,如果開發(fā)者沒有顯示配置映射器,Spring MVC 會啟動默認的映射器組件。在 DispatcherServlet 所在包的根目錄下有名為 DispatcherServlet.properties 的文件,已經(jīng)配置了很多默認組件信息,開發(fā)者不用做任何配置,便能啟動這些組件工作。打開此文件可以看到有 2 種類型的映射器信息:org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\ org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping這兩個映射器分別為哪一種請求尋找控制器了?回答這個問題之間,先了解用戶控制器的映射方式。前面提到可使用 @RequestMapping 注解對外映射控制器組件。其實 Spring MVC 還可以使用 @Bean 注解實現(xiàn)相同的功能 。先假設(shè)存在如下的控制器:public class HelloAction { public String hello() implements Controller{ System.out.println("hello"); return "hello"; }}@Bean 注解映射: 打開項目中的 WebConfig 配置類,添加如下代碼; @Bean(name = "/hello") public HelloAction hello() { return new HelloAction(); }Tips: “hello” 前面一定要加上 “/” 。如果使用 @Bean 注解的方式映射控制器,則用戶控制器需要實現(xiàn) org.springframework.web.servlet.mvc.Controller 接口, 意味著必須是一個標(biāo)準(zhǔn)的控制器。此處的 @Bean 的作用就是告訴 Spring MVC:你要創(chuàng)建它,其名字被當(dāng)成一個訪問控制器的 URL。BeanNameUrlHandlerMapping 映射器的功能就是查找有沒有哪一個 Bean 的名字和用戶請求的路徑相匹配。RequestMappingHandlerMapping 映射器就是查找由 @RequestMapping 注解映射的控制器。無論使用這 2 種映射器的哪一種,理論上都無需顯示配置。Spring 會根據(jù)你的請求信息選擇對應(yīng)的映射器。顯然,使用 @RequestMapping 映射更直接、可觀。所以,RequestMappingHandlerMapping 映射器使用的更多。

4. 小結(jié)

本章節(jié)和大家一起講解 Spring MVC 框架的重定向過程中是如何實現(xiàn)數(shù)據(jù)傳遞的,傳遞方式歸納起來就 2 種:通過 URL 附加數(shù)據(jù)的方式傳遞數(shù)據(jù);使用 Spring MVC 提供的 RedirectAttributes 組件實現(xiàn)數(shù)據(jù)的傳遞。兩種方式各有屬于自己的應(yīng)用場景,數(shù)據(jù)量不多時可以使用第一種方案。數(shù)據(jù)以對象方式進行傳遞時可使用第二種方案。

2. MultipartResolver 組件

多數(shù)情況下,頁面中的數(shù)據(jù)都是以字符串格式發(fā)送給服務(wù)器。但有時,用戶需要上傳自己的個人頭像或者上傳文件,或者說以二進制的方式進行數(shù)據(jù)傳送。這時就不能使用字符串的方式傳遞數(shù)據(jù)了。Spring MVC 提供有 MultipartResolver 相關(guān)組件實現(xiàn)文件上傳,不需要特別引入第三方模塊。默認情況下,Spring MVC 沒有啟用文件上傳組件,使用前需要做些簡單的配置。

直播
查看課程詳情
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號