一、Controller註解 二、RestController註解 三、RequestMapping註解 四、PathVariable註解 五、RequestParam註解 六、文件上傳 ...
Spring Boot 預設集成了Spring MVC,下麵為Spring MVC一些常用註解。
開發環境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8
新建一個名稱為demo的Spring Boot項目。
一、Controller註解
Controller註解用於修飾Java類,被修飾的類充當MVC中的控制器角色。
Controller註解使用了@Component修飾,使用Controller註解修飾的類,會被@ComponentScan檢測,並且會作為Spring的bean被放到容器
中。
package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class DemoController { @RequestMapping("/index") @ResponseBody public String index(){ return "index"; } }
運行項目後,瀏覽器訪問:http://localhost:8080/index,頁面顯示:
index
二、RestController註解
RestController註解是為了更方便使用@Controller和@ResponseBody。
@ResponseBody修飾控制器方法,方法的返回值將會被寫到HTTP的響應體中,所返回的內容不放到模型中,也不會被解釋為視圖的名稱。
下麵例子等同於上面例子。
package com.example.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { @RequestMapping("/index") public String index(){ return "index"; } }
三、RequestMapping註解
RequestMapping註解可修飾類或方法,主要用於映射請求與處理方法。
當用於修飾類並設置了URL時,表示為各個請求設置了URL首碼。
RequestMapping註解主要有以下屬性:
(1)path與value:用於配置映射的url;
(2)method:映射的HTTP方法,如GET、POST、PUT、DELETE;
也可以使用預設配置了@RequestMapping的method屬性的幾個註解:
@GetMapping等同於RequestMapping(method="RequestMethod.GET")
@PostMapping、@PutMapping、@DeleteMapping類似。
(3)params:為映射的請求配置參數標識;
(4)consumes:配置請求的數據類型,如XML或JSON等;
(5)produces:配置響應的數據類型,如“application/json”返回json數據;
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/oa") public class DemoController { @RequestMapping(value = "/index1") public String index1(){ return "index1"; } @RequestMapping(value = "/index2", method = RequestMethod.GET) public String index2(){ return "index2"; } @GetMapping(value = "/index3") public String index3(){ return "index3"; } }
瀏覽器分別訪問:
http://localhost:8080/oa/index1
http://localhost:8080/oa/index2
http://localhost:8080/oa/index3
頁面分別顯示:
index1
index2
index3
四、PathVariable註解
PathVariable註解主要用於修飾方法參數,表示該方法參數是請求URL的變數。
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { @GetMapping("/index1/{name}") public String index1(@PathVariable String name){ return "index1: " + name; } //可以為@PathVariable配置屬性值,顯式綁定方法參數與URL變數的值 @GetMapping("/index2/{name}") public String index2(@PathVariable("name") String lc){ return "index2: " + lc; } }
瀏覽器訪問http://localhost:8080/index1/a
頁面顯示:
a
訪問http://localhost:8080/index1/b
頁面顯示:
b
五、RequestParam註解
RequestParam註解用於獲取請求體中的請求參數,如表單提交後獲取頁面控制項name值。
package com.example.demo; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Map; @RestController public class DemoController { @PostMapping("/index1") public String index1(@RequestParam String userName){ return userName; } //map存放所有請求參數 @PostMapping("/index2") public String index2(@RequestParam Map<String,String> map){ String age = map.get("age"); String sex = map.get("sex"); return age + "," + sex; } }
隨便在電腦中如桌面新建一個html文件:
<html> <body> <form method="post" action="http://localhost:8080/index1"> <input type="text" name="userName" value="abc" /> <input type="submit" value="提交1" /> </form> <form method="post" action="http://localhost:8080/index2"> <input type="text" name="age" value="22" /> <input type="password" name="sex" value="male" /> <input type="submit" value="提交2" /> </form> </body> </html>
瀏覽器打開後,如果點擊“提交1”按鈕後,頁面跳到http://localhost:8080/index1,顯示abc。
如果點擊“提交2”按鈕後,頁面跳到http://localhost:8080/index2,顯示22,male。
六、文件上傳
使用RequestParam註解可以實現文件上傳。
package com.example.demo; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; @RestController public class DemoController { @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); String filePath = "D:/"; File dest = new File(filePath + fileName); file.transferTo(dest); return "上傳成功"; } }
隨便新建一個html文件
<html> <body> <form method="post" action="http://localhost:8080/upload" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="提交" /> </form> </body> </html>
瀏覽器打開後,選擇一個文件,點擊提交後,文件保存到了D盤。