版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章
Spring
MVC的Controller主要內(nèi)容基于注解的控制器編寫請(qǐng)求處理方法Controller接收請(qǐng)求參數(shù)的方式重定向和轉(zhuǎn)發(fā)應(yīng)用@Autowired和@Service進(jìn)行依賴注入@ModelAttributeJava
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.1
基于注解的控制器使用基于注解的控制器,具有如下兩個(gè)優(yōu)點(diǎn):在基于注解的控制器類中,可以編寫多個(gè)處理方法,進(jìn)而可以處理多個(gè)請(qǐng)求(動(dòng)作)。這就允許將相關(guān)的操作編寫在同一個(gè)控制器類中,從而減少控制器類的數(shù)量,方便以后的維護(hù)?;谧⒔獾目刂破鞑恍枰谂渲梦募胁渴鹩成?,僅需要使用RequestMapping注釋類型注解一個(gè)方法進(jìn)行請(qǐng)求處理。在Spring
MVC中,最重要的兩個(gè)注解類型是Controller和RequestMapping,本章將重點(diǎn)介紹它們。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.1.1
Controller注解類型在Spring
MVC中,使用org.springframework.stereotype.Controller注解類型聲明某類的實(shí)例是一個(gè)控制器。package
controller;import
org.springframework.stereotype.Controller;/**“@Controller”表示IndexController的實(shí)例是一個(gè)控制器@Controller相當(dāng)于@Controller("indexController")或@Controller(value="indexController")*/@Controllerpublic
class
IndexController
{//處理請(qǐng)求的方法}Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)在SpringMVC中,使用掃描機(jī)制找到應(yīng)用中所有基于注解的控制器類。所以,為了讓控制器類被Spring
MVC框架掃描到,需要在配置文件中聲明spring-context,并使用<context:component-scan/>元素指定控制器類的基本包(請(qǐng)確保所有控制器類都在基本包及其子包下)。<!--使用掃描機(jī)制,掃描控制器類,控制器類都在controller包及其子包下--><context:component-scan
base-package="controller"/>Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.1.2
RequestMapping注解類型在基于注解的控制器類中,可以為每個(gè)請(qǐng)求編寫對(duì)應(yīng)的處理方法。如何將請(qǐng)求與處理方法一一對(duì)應(yīng)呢?需要使用
org.springframework.web.bind.annotation.RequestMapping注解類型將請(qǐng)求與處理方法一一對(duì)應(yīng)。方法級(jí)別注解類級(jí)別注解Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)1.方法級(jí)別注解@Controllerpublic
class
IndexController
{@RequestMapping(value
="/index/login")public
String
login()
{/**login代表邏輯視圖名稱,需要根據(jù)Spring
MVC配置*文件中internalResourceViewResolver的前綴和后綴找到對(duì)應(yīng)的物理視圖*/return
"login";}@RequestMapping(value
=
"/index/register")public
String
register()
{return
"register";}}http://localhost:8080/ch10/index/loginJava
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)2.類級(jí)別注解@Controller@RequestMapping("/index")public
class
IndexController
{@RequestMapping("/login")public
String
login()
{return
"login";}@RequestMapping("/register")public
String
register()
{return
"register";}}http://localhost:8080/ch10/index/loginJava
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.1.3
編寫請(qǐng)求處理方法在控制類中每個(gè)請(qǐng)求處理方法可以有多個(gè)不同類型的參數(shù),以及一個(gè)多種類型的返回結(jié)果。除了Servlet
API參數(shù)類型外,還有輸入輸出流、表單實(shí)體類、注解類型、與Spring框架相關(guān)的類型等等,這些類型在后續(xù)章節(jié)中使用時(shí)再詳細(xì)介紹。但特別重要的類型是org.springframework.ui.Model類型,該類型是一個(gè)包含Map的Spring框架類型。每次調(diào)用請(qǐng)求處理方法時(shí),Spring
MVC都將創(chuàng)建org.springframework.ui.Model對(duì)象。最常見的返回類型,就是代表邏輯視圖名稱的String類型,如前面章節(jié)中的請(qǐng)求處理方法。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2
Controller接收請(qǐng)求參數(shù)的常見方式通過實(shí)體bean接收請(qǐng)求參數(shù)通過處理方法的形參接收請(qǐng)求參數(shù)通過HttpServletRequest接收請(qǐng)求參數(shù)通過@PathVariable接收URL中的請(qǐng)求參數(shù)通過@RequestParam接收請(qǐng)求參數(shù)通過@ModelAttribute接收請(qǐng)求參數(shù)Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.1 通過實(shí)體bean接收請(qǐng)求參數(shù)通過一個(gè)實(shí)體bean來接收請(qǐng)求參數(shù),適用于get和post提交請(qǐng)求方式。需要注意的是,bean的屬性名稱必須與請(qǐng)求參數(shù)名稱相同。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.2
通過處理方法的形參接收請(qǐng)求參數(shù)通過處理方法的形參接收請(qǐng)求參數(shù),也就是直接把表單參數(shù)寫在控制器類相應(yīng)方法的形參中,即形參名稱與請(qǐng)求參數(shù)名稱完全相同。該接收參數(shù)方式適用于get和post提交請(qǐng)求方式。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.3 通過HttpServletRequest接收請(qǐng)求參數(shù)通過HttpServletRequest接收請(qǐng)求參數(shù),適用于get和post提交請(qǐng)求方式。public
String
register(HttpServletRequest
request,
Model
model)
{String
uname
=
request.getParameter("uname");String
upass
=
request.getParameter("upass");Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.4 通過@PathVariable接收URL中的請(qǐng)求參數(shù)@RequestMapping(value="/register/{uname}/{upass}",method=RequestMethod.GET)//必須加method屬性/***通過@PathVariable獲取URL中的參數(shù)*/public
String
register(@PathVariable
String
uname,@PathVariable
Stringupass,
Model
model)
{Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.5 通過@RequestParam接收請(qǐng)求參數(shù)通過@RequestParam接收請(qǐng)求參數(shù),適用于get和post提交請(qǐng)求方式。通過@RequestParam接收請(qǐng)求參數(shù)與10.2.2節(jié)“通過處理方法的形參接收請(qǐng)求參數(shù)”的區(qū)別是:當(dāng)請(qǐng)求參數(shù)與接收參數(shù)名不一致時(shí),“通過處理方法的形參接收請(qǐng)求參數(shù)”不會(huì)報(bào)404錯(cuò)誤,而“通過@RequestParam接收請(qǐng)求參數(shù)”會(huì)404錯(cuò)誤。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.2.6 通過@ModelAttribute接收請(qǐng)求參數(shù)@ModelAttribute注解放在處理方法的形參上時(shí),用于將多個(gè)請(qǐng)求參數(shù)封裝到一個(gè)實(shí)體對(duì)象,從而簡(jiǎn)化數(shù)據(jù)綁定流程,而且自動(dòng)暴露為模型數(shù)據(jù)用于視圖頁面展示時(shí)使用。而10.2.1節(jié)中只是將多個(gè)請(qǐng)求參數(shù)封裝到一個(gè)實(shí)體對(duì)象,并不能暴露為模型數(shù)據(jù)(需要使用model.addAttribute語句才能暴露為模型數(shù)據(jù),數(shù)據(jù)綁定與模型數(shù)據(jù)展示,可參考第12章的內(nèi)容)。通過@ModelAttribute注解接收請(qǐng)求參數(shù),適用于get和post提交請(qǐng)求方式。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)@RequestMapping("/register")public
String
register(@ModelAttribute("user")
UserForm
user)
{if("zhangsan".equals(user.getUname())&&
"123456".equals(user.getUpass())){("成功");return
"login";//注冊(cè)成功,跳轉(zhuǎn)到login.jsp}else{("失敗");//使用@ModelAttribute("user")與model.addAttribute("user",user)功能相同//在register.jsp頁面上可以使用EL表達(dá)式${user.uname}取出ModelAttribute的uname值return
"register";//返回register.jsp}}Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.3
重定向與轉(zhuǎn)發(fā)在Spring
MVC框架中,控制器類中處理方法的return語句默認(rèn)就是轉(zhuǎn)發(fā)實(shí)現(xiàn),只不過實(shí)現(xiàn)的是轉(zhuǎn)發(fā)到視圖。//轉(zhuǎn)發(fā)到一個(gè)請(qǐng)求方法(同一個(gè)控制器類里,可省略/index/)return"forward:/index/isLogin";//重定向到一個(gè)請(qǐng)求方法return
"redirect:/index/isRegister";//轉(zhuǎn)發(fā)到一個(gè)視圖return"register";Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.4 應(yīng)用@Autowired進(jìn)行依賴注入在前面學(xué)習(xí)的控制器中,并沒有體現(xiàn)MVC的M層,這是因?yàn)榭刂破骷闯洚?dāng)C層,又充當(dāng)M層。這樣設(shè)計(jì)程序的系統(tǒng)結(jié)構(gòu)很不合理,應(yīng)該將M層從控制器中分離出來。Spring
MVC框架本身就是一個(gè)非常優(yōu)秀的MVC框架,它具有一個(gè)依賴注入的優(yōu)點(diǎn)??梢酝ㄟ^org.springframework.beans.factory.annotation.Autowired注解類型將依賴注入到一個(gè)屬性(成員變量)或方法,如:@Autowiredpublic
UserService
userService;在Spring
MVC中,為了能被作為依賴注入,類必須使用org.springframework.stereotype.Service注解類型注明為@Service(一個(gè)服務(wù))。另外,還需要在配置文件中使用<context:component-scan
base-package="基本包"/>元素來掃描依賴基本包。Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)10.5
@ModelAttribute綁定請(qǐng)求參數(shù)到實(shí)體對(duì)象(表單的命令對(duì)象)注解一個(gè)非請(qǐng)求處理方法Java
EE框架整合開發(fā)入門到實(shí)戰(zhàn)——Spring+Spring
MVC+MyBatis(微課版)1.綁定請(qǐng)求參數(shù)到實(shí)體對(duì)象(表單的命令對(duì)象)該用法如10.2.6節(jié)內(nèi)容:@RequestMapping("/register")public
String
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度互聯(lián)網(wǎng)廣告行業(yè)勞動(dòng)合同范本及廣告內(nèi)容審核責(zé)任協(xié)議3篇
- 脫丙烷課程設(shè)計(jì)
- 船舶原理課程設(shè)計(jì)散貨船
- 美術(shù)生創(chuàng)新思維課程設(shè)計(jì)
- 線上花束插花課程設(shè)計(jì)
- 茶園生產(chǎn) 課程設(shè)計(jì)
- 線上課程設(shè)計(jì)公司
- 《精神分析技巧》課件
- 2024年美術(shù)教案設(shè)計(jì)(7篇)
- 穿銷單元課程設(shè)計(jì)
- 護(hù)理人文關(guān)懷示范病房創(chuàng)建及成效14-44-16
- QGDW375.32009《電力用戶用電信息采集系統(tǒng)型式規(guī)范第三部分:采集器型式規(guī)范》
- DB37∕T 5112-2018 村莊道路建設(shè)規(guī)范
- 牽引供電系統(tǒng)遠(yuǎn)動(dòng)技術(shù)概述講解課件
- 義務(wù)教育《道德與法治》課程標(biāo)準(zhǔn)(2022年版)
- 乙肝五項(xiàng)詳解(課堂PPT)
- TD汽車維修公司管理制度和崗位職責(zé)匯編-30頁
- 數(shù)字化設(shè)計(jì)與制造PPT課件
- 個(gè)人信息查詢使用授權(quán)書
- 工作證明(通用)
- 通達(dá)信-低位放量公式(已驗(yàn)證)
評(píng)論
0/150
提交評(píng)論