Spring中Controller應(yīng)用深入理解
概述
Controller是Spring接受并處理網(wǎng)頁(yè)請(qǐng)求的組件,是整個(gè)應(yīng)用的入口,因此學(xué)會(huì)Controller的常用注解對(duì)理解一個(gè)應(yīng)用是重中之重。SpringBoot的Controller中經(jīng)常會(huì)用到注解@Controller、@RestController、@RequestMapping、@RequestBody等,本短文主要對(duì)這些常用的Controller注解進(jìn)行簡(jiǎn)單介紹。
1. 添加依賴(lài)
首先,需要保障此項(xiàng)目中存在spring-boot-starter-web依賴(lài)項(xiàng),否則,當(dāng)前項(xiàng)目并不具備Web應(yīng)用程序開(kāi)發(fā)所需的依賴(lài)!
提示:spring-boot-starter-web是建立在spring-boot-starter的基礎(chǔ)之上的,即包含了spring-boot-starter,所以,在此次調(diào)整依賴(lài)項(xiàng)時(shí),只需要將原有的spring-boot-starter改為spring-boot-starter-web即可!
<!-- Spring Boot框架支持WEB開(kāi)發(fā)的依賴(lài)項(xiàng) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>當(dāng)項(xiàng)目中存在以上依賴(lài)項(xiàng)時(shí),就具備了Web開(kāi)發(fā)的依賴(lài),且此依賴(lài)項(xiàng)中內(nèi)置了Tomcat,當(dāng)啟用項(xiàng)目時(shí),會(huì)自動(dòng)將當(dāng)前項(xiàng)目編譯、打包、部署到內(nèi)置的Tomcat上,并啟動(dòng)Tomcat。
在根包下創(chuàng)建controller.AlbumController類(lèi),將此類(lèi)配置為控制器類(lèi),并處理“添加相冊(cè)”的請(qǐng)求:
@RestController
@RequestMapping("/album")
public class AlbumController {
@Autowired
private IAlbumService albumService;
// http://localhost:8080/album/add-new?name=TestAlbum001&description=TestDescription001&sort=66
@RequestMapping("/add-new")
public void addNew(AlbumAddNewDTO albumAddNewDTO){
albumService.addNew(albumAddNewDTO);
}
}完成后,啟動(dòng)項(xiàng)目,打開(kāi)瀏覽器,通過(guò)http://localhost:8080/album/add-new?name=TestAlbum001&description=TestDescription001&sort=66可以測(cè)試添加數(shù)據(jù)!
提示:目前添加相冊(cè)成功時(shí),在瀏覽器中并不會(huì)有任何提示。
如果使用相同的請(qǐng)求參數(shù)反復(fù)提交請(qǐng)求,瀏覽器會(huì)顯示500錯(cuò)誤,這是因?yàn)闆](méi)有處理異常所導(dǎo)致的!
2. 關(guān)于異常
可能出現(xiàn)的異常
- 如果某個(gè)方法會(huì)拋出異常,則誰(shuí)調(diào)用,誰(shuí)處理;
- 如果調(diào)用的方法拋出了異常,當(dāng)前方法也沒(méi)有使用
try...catch進(jìn)行捕獲并處理,相當(dāng)于當(dāng)前方法拋出了此異常; - 如果服務(wù)器端程序運(yùn)行時(shí)出現(xiàn)了異常,始終未被處理,框架默認(rèn)的行為是響應(yīng)500錯(cuò)誤,此時(shí)應(yīng)該檢查服務(wù)器端的控制臺(tái),在控制臺(tái)中應(yīng)該有異常的相關(guān)信息;
- 處理異常的本質(zhì)是:告訴客戶(hù)端執(zhí)行失敗,且失敗的原因是什么,以至于客戶(hù)端下次提交請(qǐng)求時(shí)可能成功,另外,對(duì)于某些特殊的情景,可能還需要補(bǔ)充執(zhí)行一些其它代碼;
- 關(guān)于異常的捕獲處理和拋出,在典型的服務(wù)器端項(xiàng)目中,Mapper、Service都不能處理異常,因?yàn)樗鼈儾慌c客戶(hù)端直接交互,如果它們處理了異常,Controller將不知道出現(xiàn)過(guò)錯(cuò)誤,反而響應(yīng)“成功”的結(jié)果到客戶(hù)端,但客戶(hù)端的請(qǐng)求是沒(méi)有達(dá)到預(yù)期的目標(biāo)的,而Controller有義務(wù)處理異常,因?yàn)樗桥c客戶(hù)端交互的組件
總結(jié)
本文只是對(duì)常用的一些@Controller層的注解進(jìn)行簡(jiǎn)介,對(duì)這些注解組合使用,才能夠達(dá)到想要完成的目的任務(wù)。
到此這篇關(guān)于Spring中Controller應(yīng)用深入理解的文章就介紹到這了,更多相關(guān)Spring Controller內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)學(xué)生教師管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)學(xué)生教師管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
使用springmvc運(yùn)行流程分析,手寫(xiě)spring框架?chē)L試
這篇文章主要介紹了使用springmvc運(yùn)行流程分析,手寫(xiě)spring框架?chē)L試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
springboot中@component注解的使用實(shí)例
這篇文章主要介紹了springboot中@component注解的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
java 中數(shù)據(jù)庫(kù)連接的JDBC和驅(qū)動(dòng)程序的深入分析
這篇文章主要介紹了java 中數(shù)據(jù)庫(kù)連接的JDBC和驅(qū)動(dòng)程序的深入分析的相關(guān)資料,需要的朋友可以參考下2017-04-04
SpringBoot項(xiàng)目嵌入RocketMQ的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot項(xiàng)目嵌入RocketMQ的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
Spring?Bean自動(dòng)裝配入門(mén)到精通
自動(dòng)裝配是使用spring滿(mǎn)足bean依賴(lài)的一種方法,spring會(huì)在應(yīng)用上下文中為某個(gè)bean尋找其依賴(lài)的bean,Spring中bean有三種裝配機(jī)制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機(jī)制和自動(dòng)裝配2022-08-08

