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)文章
Mybatis之a(chǎn)ssociation和collection用法
這篇文章主要介紹了Mybatis之a(chǎn)ssociation和collection用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02springboot代碼,注解配置獲取yml,properties文件的map即鍵值對
這篇文章主要介紹了springboot代碼,注解配置獲取yml,properties文件的map即鍵值對,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Springboot @Transactional使用時需注意的幾個問題記錄
本文詳細介紹了Spring Boot中使用`@Transactional`注解進行事務(wù)管理的多個方面,包括事務(wù)的隔離級別(如REPEATABLE_READ)和傳播行為(如REQUIRES_NEW),并指出了在同一個類中調(diào)用事務(wù)方法時可能遇到的問題以及解決方案,感興趣的朋友跟隨小編一起看看吧2025-01-01Java樹形結(jié)構(gòu)數(shù)據(jù)生成導(dǎo)出excel文件方法記錄
最近好像得罪了poi,遇到的都是導(dǎo)出word、Excel、pdf的問題,下面這篇文章主要給大家介紹了關(guān)于Java樹形結(jié)構(gòu)數(shù)據(jù)生成導(dǎo)出excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-10-10