Spring?MVC響應(yīng)結(jié)果和設(shè)置舉例詳解

?1. 返回靜態(tài)頁面
先創(chuàng)建一個 html 頁面

如果還按照之前的方式進行返回的話,返回的并不是一個 html 頁面
@RequestMapping("/response")
@RestController
public class ResponseController {
@RequestMapping("/returnHtmlPage")
public String returnHtmlPage(){
return "/hello.html";
}
}
?如果把 @RestController 改成 @Controller就可以返回 html 頁面
@RequestMapping("/response")
@Controller
public class ResponseController {
@RequestMapping("/returnHtmlPage")
public String returnHtmlPage(){
return "/hello.html";
}
}
?對比這兩個注解的實現(xiàn)可以發(fā)現(xiàn),可以理解為@RestController 是在 @Controller的基礎(chǔ)上實現(xiàn)的,相差了一個 @ResponseBody
@ResponseBody 表示返回數(shù)據(jù),如果使用 @Controller再加上@ResponseBody 就又顯示的是數(shù)據(jù)了

@ResponseBody 既是類注解又是方法注解,如果作用在類上,表示該類的所有方法都返回的是數(shù)據(jù),如果作用在方法上,表示該方法返回的是數(shù)據(jù),其它的不受影響
此外,由于 @Controller 返回的是頁面,所以用到了像之前使用的 @RestController返回數(shù)據(jù)的代碼中,就可能報錯

?如果把原來的返回值當(dāng)成頁面路徑返回后,就找不到這個頁面,就會給出 404 的狀態(tài)碼

2. 返回 html 代碼片段
如果還是用 @Controller的話,由于返回的是頁面,就找不到對應(yīng)的路徑,所以需要加上 @ResponseBody,直接寫上去的 html 代碼片段會被自動識別:
@ResponseBody
@RequestMapping("/returnHtml")
public String returnHtml(){
return "<h1>你好</h1>";
}
3. 返回 JSON
JSON 是可以表示對象的,返回對象時就會通過 JSON 方式返回
@ResponseBody
@RequestMapping("/returnJson")
public User returnJson(){
User user = new User();
user.setName("zhangsan");
user.setAge(18);
return user;
}
?這里的返回類型也變?yōu)榱?JSON

4. 設(shè)置狀態(tài)碼
狀態(tài)碼可以通過創(chuàng)建 HttpServletResponse 對象調(diào)用 setStatus 方法進行設(shè)置,例如設(shè)置一個 404
@ResponseBody
@RequestMapping("/setStatus")
public User setStatus(HttpServletResponse response){
User user = new User();
user.setName("zhangsan");
user.setAge(18);
response.setStatus(404);
return user;
}
?雖然說顯示的是 404 狀態(tài)碼,但是還是顯示了頁面
5. 設(shè)置 header
在 @RequestMapping中設(shè)置一些參數(shù)可以修改指定 header 的一些類型
1. value:指定映射的 URL
2. method:指定請求的 method 類型,如 GET ,POST等
3. consumes:指定處理請求的提交內(nèi)容類型(Content-type),例如 application/json, text/html
4. produces:指定返回的內(nèi)容類型,還可以同時設(shè)置返回值的字符編碼
5. params:指定 request 中必須包含某些參數(shù)
6. headers:指定 request 中必須包含某些制定的 header 值
來修改一下請求類型:
@ResponseBody
@RequestMapping(value = "/setHeader",produces = "application/json")
public String setHeader(){
return "<h1>你好</h1>";
}
?還可以添加一個 Header 信息
@ResponseBody
@RequestMapping(value = "/setHeader2")
public String setHeader2(HttpServletResponse response){
response.setHeader("name","zhangsan");
return "success";
}
總結(jié)
到此這篇關(guān)于Spring MVC響應(yīng)結(jié)果和設(shè)置的文章就介紹到這了,更多相關(guān)Spring MVC響應(yīng)結(jié)果和設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
聊聊spring boot的WebFluxTagsProvider的使用
這篇文章主要介紹了聊聊spring boot的WebFluxTagsProvider的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
SpringBoot整合MQTT協(xié)議實現(xiàn)消息訂閱與發(fā)布功能
文章介紹了基于MQTT的項目實現(xiàn),包含依賴配置、啟動時固定主題訂閱、連接配置類、消息發(fā)布與訂閱功能、回調(diào)處理連接狀態(tài)及消息,并通過接口測試消息發(fā)送與接收,驗證EMQX連接狀態(tài)與主題交互,感興趣的朋友跟隨小編一起看看吧2025-09-09
使用Spring事件監(jiān)聽機制實現(xiàn)跨模塊調(diào)用的步驟詳解
Spring 事件監(jiān)聽機制是 Spring 框架中用于在應(yīng)用程序的不同組件之間進行通信的一種機制,Spring 事件監(jiān)聽機制基于觀察者設(shè)計模式,使得應(yīng)用程序的各個部分可以解耦,提高模塊化和可維護性,本文給大家介紹了使用Spring事件監(jiān)聽機制實現(xiàn)跨模塊調(diào)用,需要的朋友可以參考下2024-06-06
淺析如何在SpringBoot上傳中將MultipartFile轉(zhuǎn)File對象
在我們開發(fā) Spring Boot Web 應(yīng)用中,文件上傳通常通過 MultipartFile 接口接收,但有時我們需要將 MultipartFile 轉(zhuǎn)成標(biāo)準(zhǔn)的 java.io.File 對象,下面我們就來看看具體實現(xiàn)吧2025-08-08
HttpClient的RedirectStrategy重定向處理核心機制
這篇文章主要為大家介紹了HttpClient的RedirectStrategy重定向處理核心機制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

