Java EE輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)-SSM框架(Spring MVC+Spring+MyBatis)(第2版)課件 第10章 初識(shí)Spring MVC_第1頁(yè)
Java EE輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)-SSM框架(Spring MVC+Spring+MyBatis)(第2版)課件 第10章 初識(shí)Spring MVC_第2頁(yè)
Java EE輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)-SSM框架(Spring MVC+Spring+MyBatis)(第2版)課件 第10章 初識(shí)Spring MVC_第3頁(yè)
Java EE輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)-SSM框架(Spring MVC+Spring+MyBatis)(第2版)課件 第10章 初識(shí)Spring MVC_第4頁(yè)
Java EE輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)-SSM框架(Spring MVC+Spring+MyBatis)(第2版)課件 第10章 初識(shí)Spring MVC_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

SpringMVC概述SpringMVC的應(yīng)用SpringMVC的工作流程與特點(diǎn)SpringMVC的核心類與常用注解第10章

初識(shí)SpringMVC2024/1/29學(xué)習(xí)目標(biāo)/Target

了解SpringMVC的特點(diǎn)

掌握SpringMVC入門程序的編

熟悉SpringMVC的工作流程

了解SpringMVC核心類的作用掌握SpringMVC常用注解的使用2章節(jié)概述/Summary在JavaWeb中,講解了JSPModel2架構(gòu)模型,JSPModel2架構(gòu)模型采用JSP

+

Servlet

+JavaBean技術(shù)實(shí)現(xiàn)了頁(yè)面顯示、流程控制和業(yè)務(wù)邏輯的分離。但是,JSPModel2架構(gòu)模型將流程控制等通用邏輯以硬編碼的方式實(shí)現(xiàn),每次進(jìn)行新的Web應(yīng)用程序開發(fā)時(shí),都需要重新編寫Servlet控制器的URL分析代碼,以及流程控制等Web層通用邏輯代碼。為了解決JSPModel2架構(gòu)模型在實(shí)踐中存在的問(wèn)題,一些基于JSPModel2架構(gòu)基礎(chǔ)發(fā)展起來(lái)的WebMVC應(yīng)用框架應(yīng)運(yùn)而生。其中SpringMVC框架就是目前最主流的WebMVC應(yīng)用框架之一,本章將開啟SpringMVC框架的學(xué)習(xí)之路。

3目錄/CONTENTSSpringMVC概述SpringMVC的核心類與常用注解SpringMVC的工作流程與特點(diǎn)SpringMVC的應(yīng)用1432SpringMVC概述01第11章初識(shí)SpringMVCMVC設(shè)計(jì)模式5-1視圖(View)-對(duì)應(yīng)組件:JSP或者HTML文件控制器(Controller)-對(duì)應(yīng)組件:Servlet模型(Model)-對(duì)應(yīng)組件:JavaBeanServletJSP數(shù)據(jù)庫(kù)JavaBeanViewControllerModel6MVC設(shè)計(jì)模式5-2JSPModel17MVC設(shè)計(jì)模式5-3JSPModel2JSP:負(fù)責(zé)生成動(dòng)態(tài)網(wǎng)頁(yè)Servlet:負(fù)責(zé)流程控制JavaBean:負(fù)責(zé)業(yè)務(wù)邏輯處理8MVC設(shè)計(jì)模式5-4MVC處理過(guò)程9MVC實(shí)際開發(fā)架構(gòu)圖架構(gòu)圖分為兩部分:虛線框外的是WEB程序的瀏覽器部分,用戶通過(guò)瀏覽器與系統(tǒng)進(jìn)行交互,同時(shí)瀏覽器也負(fù)責(zé)解析JSP頁(yè)面虛線框內(nèi)的是WEB程序的后臺(tái)部分,這部分包括控制器(Controller類)、業(yè)務(wù)邏輯(Service類)、數(shù)據(jù)模型(實(shí)體類)、數(shù)據(jù)持久層(MyBatis框架)和MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)。10MVC設(shè)計(jì)模式5-5MVC優(yōu)點(diǎn)多視圖共享一個(gè)模型,大大提高代碼的可重用性MVC三個(gè)模塊相互獨(dú)立,松耦合架構(gòu)控制器提高了應(yīng)用程序的靈活性和可配置性有利于軟件工程化管理MVC缺點(diǎn)原理復(fù)雜增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性視圖對(duì)模型數(shù)據(jù)的低效率訪問(wèn)完美的系統(tǒng)架構(gòu)=松耦合+高重用性+高擴(kuò)展性11什么是SpringMVC?SpringMVC概述

SpringMVC是Spring提供的一個(gè)實(shí)現(xiàn)了WebMVC設(shè)計(jì)模式的輕量級(jí)Web框架。它與Struts2框架一樣,都屬于MVC框架,但其使用和性能等方面比Struts2更加優(yōu)異。12SpringMVC概述是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。提供了一個(gè)前端控制器DispatcherServlet,使開發(fā)人員無(wú)需額外開發(fā)控制器對(duì)象。靈活性強(qiáng),易于與其他框架集成??勺詣?dòng)綁定用戶輸入,并能正確的轉(zhuǎn)換數(shù)據(jù)類型。內(nèi)置了常見的校驗(yàn)器,可以校驗(yàn)用戶輸入。如果校驗(yàn)不能通過(guò),那么就會(huì)重定向到輸入表單。支持國(guó)際化。可以根據(jù)用戶區(qū)域顯示多國(guó)語(yǔ)言。SpringMVC具有以下特點(diǎn):支持多種視圖技術(shù)。它支持JSP、Velocity和FreeMarker等視圖技術(shù)。使用基于XML的配置文件,在編輯后,不需要重新編譯應(yīng)用程序。13SpringMVC的應(yīng)用02第11章初識(shí)SpringMVC入門案例SpringMVC框架搭建步驟創(chuàng)建工程配置前端控制器創(chuàng)建FirstController.java創(chuàng)建SpringMVC框架的配置文件,配置控制器映射信息創(chuàng)建視圖(View)頁(yè)面啟動(dòng)項(xiàng)目,測(cè)試應(yīng)用演示示例1:入門案例實(shí)現(xiàn)步驟15第一個(gè)SpringMVC應(yīng)用在web.xml中,配置SpringMVC的前端控制器DispatcherServlet。<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="/2001/XMLSchema-instance"...<servlet> <servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern></servlet-mapping></web-app>SpringMVC前端控制器配置加載SpringMVC配置文件位置1表示容器在啟動(dòng)時(shí)立即加載該Servlet/表示攔截所有URL的請(qǐng)求16

第一個(gè)SpringMVC應(yīng)用在src目錄下,創(chuàng)建一個(gè)com.test.controller包,并在包中創(chuàng)建控制器類FirstController,該類需要實(shí)現(xiàn)Controller接口,編輯后如下所示。publicclassFirstControllerimplementsController{publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse){System.out.println("hello,SpringMVC!");//在控制臺(tái)輸出日志信息

//創(chuàng)建ModelAndView對(duì)象

ModelAndViewmav=newModelAndView();//向模型對(duì)象中添加數(shù)據(jù)mav.addObject("msg","這是我的第一個(gè)SpringMVC程序");//設(shè)置邏輯視圖名

mav.setViewName("/WEB-INF/jsp/index.jsp");//返回ModelAndView對(duì)象returnmav;}}創(chuàng)建ModelAndView對(duì)象設(shè)置邏輯視圖名實(shí)現(xiàn)Controller接口添加返回信息17第一個(gè)SpringMVC應(yīng)用在src目錄下,創(chuàng)建配置文件springmvc-config.xml,并在文件中配置控制器信息。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.2.xsd"> <!--配置處理器Handle,映射“/firstController”請(qǐng)求-->

<beanname="/firstController"class="cn.dsscm.controller.FirstController"/> <!--處理器映射器,將處理器Handle的name作為url進(jìn)行查找--> <beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--處理器適配器,配置對(duì)處理器中handleRequest()方法的調(diào)用--> <beanclass="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--視圖解析器--> <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> </bean></beans>配置處理器配置處理器映射器配置處理器適配器配置視圖解析器在老版本Spring中,必須配置處理器映射器、處理器適配器和視圖解析器;但在Spring4.0后簡(jiǎn)化了配置,這些就可以省略,交由Spring內(nèi)部自動(dòng)管理。提示18第一個(gè)SpringMVC應(yīng)用在WEB-INF目錄下,創(chuàng)建一個(gè)jsp文件夾,并在文件夾中創(chuàng)建一個(gè)頁(yè)面文件index.jsp,在該頁(yè)面中使用EL表達(dá)式獲取msg中的信息,如下所示。<html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>入門程序</title></head><body>${msg}</body></html>用EL表達(dá)式獲取后臺(tái)處理器封裝的信息19上機(jī)練習(xí)1:

使用SpringMVC實(shí)現(xiàn)頁(yè)面輸出1

需求說(shuō)明:搭建SpringMVC環(huán)境實(shí)現(xiàn)前端頁(yè)面內(nèi)輸出“學(xué)框架就學(xué)SpringMVC!”HandlerMappingBeanNameUrlHandlerMappingViewResolverInternalResourceViewResolver導(dǎo)入jar文件配置DispatcherServlet(web.xml)springmvc-servlet.xml創(chuàng)建Controller:繼承AbstractController,重寫handleRequestInternal()創(chuàng)建View部署運(yùn)行完成時(shí)間:20分鐘練習(xí)提示20共性問(wèn)題集中講解常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解21優(yōu)化項(xiàng)目——優(yōu)化路徑解析2-1修改FirstController.java設(shè)置邏輯視圖名,簡(jiǎn)化訪問(wèn)路徑“index”,不寫前面固定路徑和后綴文件名。publicclassFirstControllerimplementsController{publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse){System.out.println("hello,SpringMVC!");//在控制臺(tái)輸出日志信息

//創(chuàng)建ModelAndView對(duì)象

ModelAndViewmav=newModelAndView();//向模型對(duì)象中添加數(shù)據(jù)mav.addObject("msg","這是我的第一個(gè)SpringMVC程序");//設(shè)置邏輯視圖名

mav.setViewName("/WEB-INF/jsp/index.jsp");//返回ModelAndView對(duì)象returnmav;}}index22優(yōu)化項(xiàng)目——優(yōu)化路徑解析2-2springmvc-servlet.xml配置文件中,使用SpringMVC最簡(jiǎn)單配置方式來(lái)進(jìn)行配置<beanname="/index.html"class="cn.dsscm.controller.IndexController"/><!--完成視圖的對(duì)應(yīng)--><!--對(duì)轉(zhuǎn)向頁(yè)面的路徑解析。prefix:前綴,suffix:后綴--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="prefix"value="/WEB-INF/jsp/"/> <propertyname="suffix"value=".jsp"/></bean>23優(yōu)化項(xiàng)目——注解驅(qū)動(dòng)控制器3-1通過(guò)BeanNameUrlHandlerMapping的方式完成請(qǐng)求與Controller之間的映射關(guān)系若有多個(gè)請(qǐng)求時(shí),需要配置多個(gè)映射關(guān)系,并建立多個(gè)Controller來(lái)進(jìn)行請(qǐng)求處理,實(shí)現(xiàn)繁瑣,如何解決?springmvc-servlet.xml……<beanname="/index.html"class="cn.dsscm.controller.IndexController"/><beanname="/user.html"class="cn.dsscm.controller.UserController"/>……提問(wèn)24優(yōu)化項(xiàng)目——注解驅(qū)動(dòng)控制器3-2基于注解的處理器@Controller:標(biāo)注一個(gè)普通的JavaBean成為可以處理請(qǐng)求的控制器@RequestMapping:通過(guò)請(qǐng)求URL進(jìn)行映射一鍵式配置,通過(guò)注解的方式進(jìn)行SpringMVC開發(fā)DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter<context:component-scan/><mvc:annotation-driven/><context:component-scanbase-package="cn.dsscm.controller"/><mvc:annotation-driven/>25優(yōu)化項(xiàng)目——注解驅(qū)動(dòng)控制器3-3使標(biāo)注了SpringMVC注解(如(@Controller等)的Bean生效。為控制器類標(biāo)注@Controller使用@RequestMapping對(duì)方法進(jìn)行標(biāo)注importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;@ControllerpublicclassIndexController{ //RequestMapping表示用哪個(gè)url來(lái)對(duì)應(yīng)(此處:"/index")

@RequestMapping("/index") publicStringindex(){ //System.out.println("hello,SpringMVC!"); ("hello,SpringMVC!"); return"index"; }}演示示例2:Hello,SpringMVC-<mvcannotation-driven/>26上機(jī)練習(xí)2:

使用SpringMVC實(shí)現(xiàn)頁(yè)面輸出2

需求說(shuō)明:在上機(jī)練習(xí)1的基礎(chǔ)上,更改SpringMVC的處理器映射的配置為支持注解式處理器,實(shí)現(xiàn)頁(yè)面輸出:學(xué)框架就學(xué)SpringMVC!”HandlerMapping<mvc:annotation-driven/>ViewResolverInternalResourceViewResolver加入Log4j進(jìn)行后臺(tái)日志輸出更改springmvc-servlet.xml<mvc:annotation-driven/><context:component-scanbase-package="cn.dsscm.controller"/>創(chuàng)建Controller@Controller@RequestMapping部署運(yùn)行完成時(shí)間:15分鐘練習(xí)提示27共性問(wèn)題集中講解常見問(wèn)題及解決辦法代碼規(guī)范問(wèn)題調(diào)試技巧共性問(wèn)題集中講解28SpringMVC

的工作流程與特點(diǎn)03第11章初識(shí)SpringMVCSpringMVC的工作流程SpringMVC是如何工作的呢?

通過(guò)上一小節(jié)入門案例的學(xué)習(xí),相信讀者對(duì)SpringMVC的使用已經(jīng)有了一個(gè)初步的了解。在實(shí)際開發(fā)中,我們的實(shí)際工作主要集中在控制器和視圖頁(yè)面上,但SpringMVC內(nèi)部完成了很多工作,這些程序在項(xiàng)目中具體是怎么執(zhí)行的呢?接下來(lái),將通過(guò)一張圖來(lái)展示SpringMVC程序的執(zhí)行情況。30SpringMVC請(qǐng)求處理流程31SpringMVC體系結(jié)構(gòu)32SpringMVC的工作流程DispatcherServlet前端控制器HandlerMapping處理器映射器HandlerAdapter處理器適配器ViewReslover視圖解析器Handler處理器View視圖(如JSP)Web服務(wù)器①②③⑦④⑤⑥⑨⑧⑩?用戶通過(guò)瀏覽器向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求會(huì)被SpringMVC的前端控制器DispatcherServlet所攔截;1DispatcherServlet攔截到請(qǐng)求后,會(huì)調(diào)用HandlerMapping處理器映射器;2處理器映射器根據(jù)請(qǐng)求URL找到具體的處理器,生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet;3DispatcherServlet會(huì)通過(guò)返回信息選擇合適的HandlerAdapter(處理器適配器);4HandlerAdapter會(huì)調(diào)用并執(zhí)行Handler(處理器),這里的處理器指的就是程序中編寫的Controller類,也被稱之為后端控制器;5Controller執(zhí)行完成后,會(huì)返回一個(gè)ModelAndView對(duì)象,該對(duì)象中會(huì)包含視圖名或包含模型和視圖名;6HandlerAdapter將ModelAndView對(duì)象返回給DispatcherServlet;7DispatcherServlet會(huì)根據(jù)ModelAndView對(duì)象選擇一個(gè)合適的ViewReslover(視圖解析器);8ViewReslover解析后,會(huì)向DispatcherServlet中返回具體的View(視圖);9視圖渲染結(jié)果會(huì)返回給客戶端瀏覽器顯示。11DispatcherServlet對(duì)View進(jìn)行渲染(即將模型數(shù)據(jù)填充至視圖中);1033SpringMVC框架特點(diǎn)清晰地角色劃分靈活的配置功能提供了大量的控制器接口和實(shí)現(xiàn)類真正做到與View層的實(shí)現(xiàn)無(wú)關(guān)(JSP、Velocity、Xslt等)國(guó)際化支持面向接口編程Spring提供了Web應(yīng)用開發(fā)的一整套流程,不僅僅是MVC,他們之間可以很方便的結(jié)合一起34SpringMVC的

核心類與常用注解04第11章初識(shí)SpringMVCSpringMVC的核心類DispatcherServlet(前端控制器)SpringMVC最核心的類web.xml中配置Handler(處理器):對(duì)應(yīng)MVC中C(Controller層)類型:Object作用:實(shí)際處理請(qǐng)求標(biāo)注了@RequestMapping的所有方法都可以看作是一個(gè)HandlerModelAndView邏輯視圖名模型對(duì)象36SpringMVC的核心類核心組件HandlerMapping(處理器映射)BeanNameUrlHandlerMapping(默認(rèn))將請(qǐng)求URL映射到同名的控制器Bean上DefaultAnnotationHandlerMapping將請(qǐng)求映射到標(biāo)注@RequestMapping注解的控制器和處理方法上RequestMappingHandlerMappingHandlerAdapter(適配器)AnnotationMethodHandlerAdapterRequestMappingHandlerAdapterViewResolver(視圖解析器)InternalResourceView37視圖解析器2-1視圖解析器-ViewResolver將邏輯視圖名與JSP等視圖技術(shù)進(jìn)行匹配演示:查看源碼-

ViewResolver38視圖解析器2-2InternalResourceViewResolverprefixsuffix/WEB-INF/jsp/邏輯視圖名.jsp前綴后綴<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> <propertyname="prefix"value="/WEB-INF/jsp/"/> <propertyname="suffix"value=".jsp"/></bean>

在上述代碼中,定義了一個(gè)視圖解析器,并設(shè)置了視圖的前綴和后綴屬性。這樣設(shè)置后,方法中所定義的view路徑將可以簡(jiǎn)化。例如,入門案例中的邏輯視圖名只需設(shè)置為“first”,而不再需要設(shè)置為“/WEB-INF/jsp/first.jsp”,在訪問(wèn)時(shí)視圖解析器會(huì)自動(dòng)的增加前綴和后綴。39@Controller注解類型

org.springframework.stereotype.Controller注解類型用于指示Spring類的實(shí)例是一個(gè)控制器,其注解形式為@Controller。該注解在使用時(shí)不需要再實(shí)現(xiàn)Controller接口,只需要將@Controller注解加入到控制器類上,然后通過(guò)Spring的掃描機(jī)制找到標(biāo)注了該注解的控制器即可。@Controller注解在控制器類中的使用示例如下:importorg.springframework.stereotype.Controller;......@ControllerpublicclassFirstController{ ...}40@Controller注解類型為了保證Spring能夠找到控制器類,還需要在SpringMVC的配置文件中添加相應(yīng)的掃描配置信息,一個(gè)完整的配置文件示例如下:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"

xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.2.xsd

/schema/context/schema/context/spring-context-3.2.xsd"> <context:component-scanbase-package="cn.dsscm.controller"/></beans>引入context信息指定需要掃描的包使用注解方式時(shí),程序的運(yùn)行需要依賴Spring的AOP包,因此需要向lib目錄中添加spring-aop-X.X.X.RELEASE.jar,否則程序運(yùn)行時(shí)會(huì)報(bào)錯(cuò)!提示41@RequestMapping注解Spring通過(guò)@Controller注解找到相應(yīng)的控制器類后,還需要知道控制器內(nèi)部對(duì)每一個(gè)請(qǐng)求是如何處理的,這就需要使用org.springframework.web.bind.annotation.RequestMapping注解類型。RequestMapping注解類型用于映射一個(gè)請(qǐng)求或一個(gè)方法,其注解形式為@RequestMapping,可以使用該注解標(biāo)注在一個(gè)方法或一個(gè)類上。importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;...@Controller@RequestMapping(value="/hello")publicclassFirstController{

@RequestMapping(value="/firstController") publicStringhandleRequest(HttpServletRequestrequest, ... }}42RequestMapping注解的屬性@RequestMapping注解除了可以指定value屬性外,還可以指定其他一些屬性,如下表所示。屬性名類型描述nameString可選屬性,用于為映射地址指定別名valueString[]可選屬性,同時(shí)也是默認(rèn)屬性,用于映射一個(gè)請(qǐng)求和一種方法,可以標(biāo)注在一個(gè)方法或一個(gè)類上methodRequestMethod[]可選屬性,用于指定該方法用于處理哪種類型的請(qǐng)求方式,其請(qǐng)求方式包括GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE和TRACE,例如method=RequestMethod.GET表示只支持GET請(qǐng)求,如果需要支持多個(gè)請(qǐng)求方式則需要通過(guò){}寫成數(shù)組的形式,并且多個(gè)請(qǐng)求方式之間是有英文逗號(hào)分隔paramsString[]可選屬性,用于指定Request中必須包含某些參數(shù)的值,才可以通過(guò)其標(biāo)注的方法處理headersString[]可選屬性,用于指定Request中必須包含某些指定的header的值,才可以通過(guò)其標(biāo)注的方法處理consumesString[]可選屬性,用于指定處理請(qǐng)求的提交內(nèi)容類型(Conten-type),比如application/json、text/html等producesString[]可選屬性,用于指定返回的內(nèi)容類型,返回的內(nèi)容類型必須是request請(qǐng)求頭(Accept)中所包含的類型表中所有屬性都是可選的,但其默認(rèn)屬性是value。當(dāng)value是其唯一屬性時(shí),可以省略屬性名。例如,下面兩種標(biāo)注的含義相同:

@RequestMapping(value="/firstController")@RequestMapping("/firstController")提示43組合注解@GetMapping:匹配GET方式的請(qǐng)求。@PostMapping:匹配POST方式的請(qǐng)求。@PutMapping:匹配PUT方式的請(qǐng)求。@DeleteMapping:匹配DELETE方式的請(qǐng)求。@PatchMapping:匹配PATCH方式的請(qǐng)求。@RequestMapping(value="/user/{id}",method=RequestMethod.GET)publicStringselectUserById(Stringid){ ...}@GetMapping(value="/user/{id}")44在控制器類中,每一個(gè)請(qǐng)求處理方法都可以有多個(gè)不同類型的參數(shù),以及一個(gè)多種類型的返回結(jié)果。在請(qǐng)求處理方法中,可以出現(xiàn)的參數(shù)類型如下:javax.servlet.ServletRequest/javax.servlet.http.HttpServletRequestjavax.servlet.ServletResponse/javax.servlet.http.HttpServletResponsejavax.servlet.http.HttpSessionorg.springframework.web.context.request.WebRequest或org.springframework.web.context.request.NativeWebRequestjava.util.Localejava.util.TimeZone(Java6+)/java.time.ZoneId(onJava8)java.io.InputStream/java.io.Readerjava.io.OutputStream/java.io.Writerorg.springframework.http.HttpMethodjava.security.Principal@PathVariable、@MatrixVariable、@RequestParam、@RequestHeader、@RequestBody、@RequestPart、@SessionAttribute、@RequestAttribute注解HttpEntity<?>java.util.Map/org.springframework.ui.Model/org.springframework.ui.ModelMaporg.springframework.web.servlet.mvc.support.RedirectAttributesorg.springframework.validation.Errors/org.springframework.validation.BindingResultorg.springframework.web.bind.support.SessionStatusorg.springframework.web.util.UriComponentsBuilder該類型不是一個(gè)ServletAPI類型,而是一個(gè)包含了Map對(duì)象的SpringMVC類型。如果方法中添加了Model參數(shù),則每次調(diào)用該請(qǐng)求處理方法時(shí),SpringMVC都會(huì)創(chuàng)建Model對(duì)象,并將其作為參數(shù)傳遞給方法請(qǐng)求處理方法的參數(shù)和返回類型45請(qǐng)求處理方法的參數(shù)和返回類型SpringMVC所支持的常見方法返回類型如下:ModelAndViewModelMapViewStringvoidHttpEntity<?>或ResponseEntity<?>Callable<?>DeferredResult<?>請(qǐng)求處理方法的返回類型在異步請(qǐng)求時(shí)使用,它只返回?cái)?shù)據(jù),而不會(huì)跳轉(zhuǎn)視圖可以跳轉(zhuǎn)視圖,但不能攜帶數(shù)據(jù)可以添加Model數(shù)據(jù),并指定視圖由于ModelAndView類型未能實(shí)現(xiàn)數(shù)據(jù)與視圖之間的解耦,所以在企業(yè)開發(fā)時(shí),方法的返回類型通常都會(huì)使用String。提示46返回類型@RequestMapping(value="/update")publicStringupdate(HttpServletRequestrequest,HttpServletResponseresponse,Model

model){ //向模型對(duì)象中添加數(shù)據(jù)

model.addAttribute("msg","這是我的第一個(gè)SpringMVC程序");

//返問(wèn)視圖

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論