springboot @Controller和@RestController的區(qū)別及應(yīng)用詳解
@Controller和@RestController的區(qū)別及應(yīng)用
@Controller和@RestController區(qū)別
在springboot開發(fā)中控制層使用注解@Controller時,加有@GetMapping(@PostMapping或@RequestMapping)注解的方法返回值對應(yīng)的是一個視圖,而使用@RestController返回值對應(yīng)的是json數(shù)據(jù),而@Controller+@ResponseBody的作用相當(dāng)于@RestController。
@Controller的應(yīng)用
先在application.properties配置文件中配置
spring.mvc.view.prefix=classpath:/templates/ spring.mvc.view.suffix=.html
然后在控制層CustomerController類的代碼為
@Controller
public class CustomerController {
@Resource
CustomerServiceI customerServiceI;
@GetMapping("/")
public String index() {
return "redirect:/list";
}
@GetMapping("/list")
public String list(Model model) {
List<Customer> users = customerServiceI.getUserList();
model.addAttribute("users",users);
return "list";
}
}
啟動程序后在瀏覽器輸入localhost:8080/list訪問頁面即為templates文件夾下的list.html

@RestController的應(yīng)用
控制層CustomerController類的代碼為
@RestController
public class CustomerController {
@Resource
CustomerServiceI customerServiceI;
@GetMapping("/")
public String index() {
return "redirect:/list";
}
@GetMapping("/list")
public List<Customer> list(Model model) {
List<Customer> users = customerServiceI.getUserList();
model.addAttribute("users",users);
return users;
}
}
啟動程序后在瀏覽器輸入localhost:8080/list訪問效果如下

@Controller和@RestController區(qū)別的小坑
這兩個的區(qū)別其實是個很簡單的問題,但是對于初學(xué)者可能遇到了會掉坑里。
@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。
1.如果注解Controller使用@RestController
則Controller中的方法無法返回jsp頁面,或者h(yuǎn)tml,配置的視圖解析器 InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
代碼如圖:

結(jié)果如圖:

2.如果需要返回到指定頁面(jsp/html)
則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
代碼如圖:

結(jié)果如圖:

如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁面,則需要在對應(yīng)的方法上加上@ResponseBody注解。
代碼如圖:

結(jié)果如圖:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Spring注解@RestControllerAdvice原理解析
- SpringBoot http請求注解@RestController原理解析
- SpringBoot的@RestControllerAdvice作用詳解
- SpringBoot常用注解@RestControllerAdvice詳解
- Spring中@RestControllerAdvice注解的使用詳解
- Spring中的@RestController注解詳細(xì)解析
- Spring @RestController注解組合實現(xiàn)方法解析
- springboot中@RestController注解實現(xiàn)
- Spring中@RestController注解的使用實現(xiàn)
相關(guān)文章
SpringBoot后端接口的實現(xiàn)(看這一篇就夠了)
這篇文章主要介紹了SpringBoot后端接口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Sharding-jdbc報錯:Missing the data source
在使用MyBatis-plus進(jìn)行數(shù)據(jù)操作時,新增Order實體屬性后,出現(xiàn)了數(shù)據(jù)源缺失的提示錯誤,原因是因為userId屬性值使用了隨機(jī)函數(shù)生成的Long值,這與sharding-jdbc的路由規(guī)則計算不匹配,導(dǎo)致無法找到正確的數(shù)據(jù)源,通過調(diào)整userId生成邏輯2024-11-11
Java實現(xiàn)直接插入排序與折半插入排序的示例詳解
這篇文章主要為大家詳細(xì)介紹了插入排序中兩個常見的排序:直接插入排序與折半插入排序。本文用Java語言實現(xiàn)了這兩個排序算法,感興趣的可以學(xué)習(xí)一下2022-06-06
eclipse下整合springboot和mybatis的方法步驟
這篇文章主要介紹了eclipse下整合springboot和mybatis的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03

