SpringBoot學習筆記——一些Spring注解


SpringBoot學習筆記

Controller的使用

一些Spring注解及其含義

注解 含義
@Controller 處理Http請求,配合模板使用
@RestController 組合注解,可用@Controller與@ResponseBody兩句等價替換
@RequestMapping 配置url映射,用戶通過url訪問到某個指定方法
@PathVariable 獲取url中的數據
@RequestParam 獲取請求參數的值,以?和=搭配使用的方式
@GetMapping 組合注解,相當於指定了請求方式為GET的@RequestMapping注解

使用@Controller注解

1.在HelloController.java文件關鍵代碼如下:

@Controller
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String say(){
return "index";
}
}

2.在resources/templates/下新建index.html文件,並編寫代碼:
<h1>Hello SpringBoot!</h1>
3.在pom.xml文件中添加依賴的模板配置,其中thymeleaf是spring官方的一個模板:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

pom.xml

4.運行,用瀏覽器打開:

http://localhost:8080/hello

Hello SpringBoot!

注意:若未成功出現此界面,可能是由於新配置了模板的pom.xml未及時導入,可右擊pom.xml文件>Maven>Reimport
Reimport
然后再運行即可。


使用@RequestMapping注解

比如剛剛使用的注解:
@RequestMapping(value = "/hello", method = RequestMethod.GET)

value屬性

其中value的值用於設置映射的url地址,此時訪問的url應為:

http://localhost:8080/hello

如果既想通過/hello來訪問也想通過其他url映射訪問,比如/yimi,則可把value的值設置成集合:

@RequestMapping(value = {"/hello", "/yimi"}, method = RequestMethod.GET)

這樣,使用

http://localhost:8080/yimi

也可以訪問到同樣內容了。

注意:url映射是大小寫敏感的。

@RequestMapping還可以對整個類也進行url映射,把HelloControll.java文件進行修改(現在不用pom.xml和index.html做模板映射):

@RestController
@RequestMapping(value="hello")
public class HelloController {
@RequestMapping(value = "yimi", method = RequestMethod.GET)
public String say(){
return "RequestMapping test";
}
}

使用@RequestMapping同時對類和方法都做了url映射,則訪問時,url應為:

http://localhost:8080/hello/yimi

RequestMapping test

method屬性

method用於指定請求方式,比如GET、POST等。
現在把請求方式換為POST:@RequestMapping(value = "yimi", method = RequestMethod.POST)
這樣再按原來的方式就訪問不到了:
POST error

可以使用工具Postman來訪問。
Postman
選擇POST的請求方式,輸入url,點擊Send,即可在下面看到返回得到的信息。
注意:若不指定,method請求方式,則默認GET/POST均可訪問到,但安全起見還是不省略method。


使用@PathVariable注解

@PathVariable可用於獲取url中的數據。現在繼續修改HelloController.java文件內容如下:

@RestController
@RequestMapping(value="hello")
public class HelloController {
@RequestMapping(value = "yimi/{num}", method = RequestMethod.GET)
public String say(@PathVariable("num")Integer myNum){
return "num:" + myNum;
}
}

瀏覽器端效果如圖:
PathVariable

或者@RequestMapping(value = "{num}/yimi", method = RequestMethod.GET) 則url也可如下使用:
PathVariable


使用@RequestParam注解

修改HelloController.java代碼如下:

@RestController
@RequestMapping(value="hello")
public class HelloController {
@RequestMapping(value = "yimi", method = RequestMethod.GET)
public String say(@RequestParam("num")Integer myNum){
return "num:" + myNum;
}
}

瀏覽器端用法:
RequestParam

注意:若為給num參數賦值,則值為null

那么如何給num設置默認值呢?修改@RequestParam如下:

@RequestParam(value = "num", required = false, defaultValue = "0")

其中required指定是否必傳參數,false表示非必傳參數;defaultValue表示未傳參數時的默認值(注意要打引號)
再通過瀏覽器訪問:
RequestParam
現在,即使不在url中傳num的值,num也有默認值顯示了。


使用@GetMapping注解

@GetMapping是一個組合注解,相當於指定了請求方式為GET的@RequestMapping注解,即:

@RequestMapping(value = "yimi", method = RequestMethod.GET)

等價於

@GetMapping(value="yimi")

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com