SpringMVC數據響應詳細介紹
SpringMVC接收到請求和數據后,進行一些了的處理,當然這個處理可以是轉發(fā)給Service,Service層再調用Dao層完成的,不管怎樣,處理完以后,都需要將結果告知給用戶。
比如:根據用戶ID查詢用戶信息、查詢用戶列表、新增用戶等。
對于響應,主要就包含兩部分內容:
響應頁面
響應數據
- 文本數據
- json數據
因為異步調用是目前常用的主流方式,所以我們需要更關注的就是如何返回JSON數據,對于其他只需要認識了解即可。
一、環(huán)境準備
- 創(chuàng)建一個Web的Maven項目
- pom.xml添加Spring依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>springmvc_05_response</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
創(chuàng)建對應的配置類
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class<?>[] getRootConfigClasses() { return new Class[0]; } protected Class<?>[] getServletConfigClasses() { return new Class[]{SpringMvcConfig.class}; } protected String[] getServletMappings() { return new String[]{"/"}; } //亂碼處理 @Override protected Filter[] getServletFilters() { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); return new Filter[]{filter}; } } @Configuration @ComponentScan("com.itheima.controller") //開啟json數據類型自動轉換 @EnableWebMvc public class SpringMvcConfig { }
編寫模型類User
public class User { private String name; private int age; //getter...setter...toString省略 }
webapp下創(chuàng)建page.jsp
<html><body><h2>Hello Spring MVC!</h2></body></html>
編寫UserController
@Controller public class UserController { }
最終創(chuàng)建好的項目結構如下:
二、響應頁面[了解]
步驟1:設置返回頁面
@Controller public class UserController { @RequestMapping("/toJumpPage") //注意 //1.此處不能添加@ResponseBody,如果加了該注入,會直接將page.jsp當字符串返回前端 //2.方法需要返回String public String toJumpPage(){ System.out.println("跳轉頁面"); return "page.jsp"; } }
步驟2:啟動程序測試
此處涉及到頁面跳轉,所以不適合采用PostMan進行測試,直接打開瀏覽器,輸入
三、返回文本數據[了解]
步驟1:設置返回文本內容
@Controller public class UserController { @RequestMapping("/toText") //注意此處該注解就不能省略,如果省略了,會把response text當前頁面名稱去查找,如果沒有回報404錯誤 @ResponseBody public String toText(){ System.out.println("返回純文本數據"); return "response text"; } }
步驟2:啟動程序測試
此處不涉及到頁面跳轉,因為我們現在發(fā)送的是post請求,可以使用瀏覽器也可以使用PostMan進行測試,輸入地址http://localhost/toText訪問
四、響應JSON數據
響應POJO對象
@Controller public class UserController { @RequestMapping("/toJsonPOJO") @ResponseBody public User toJsonPOJO(){ System.out.println("返回json對象數據"); User user = new User(); user.setName("itcast"); user.setAge(15); return user; } }
返回值為實體類對象,設置返回值為實體類類型,即可實現返回對應對象的json數據,需要依賴==@ResponseBody==注解和==@EnableWebMvc==注解
重新啟動服務器,訪問http://localhost/toJsonPOJO
響應POJO集合對象
@Controller public class UserController { @RequestMapping("/toJsonList") @ResponseBody public List<User> toJsonList(){ System.out.println("返回json集合數據"); User user1 = new User(); user1.setName("傳智播客"); user1.setAge(15); User user2 = new User(); user2.setName("黑馬程序員"); user2.setAge(12); List<User> userList = new ArrayList<User>(); userList.add(user1); userList.add(user2); return userList; } }
重新啟動服務器,訪問http://localhost/toJsonList
知識點1:@ResponseBody
名稱 | @ResponseBody |
---|---|
類型 | ==方法\類注解== |
位置 | SpringMVC控制器方法定義上方和控制類上 |
作用 | 設置當前控制器返回值作為響應體, 寫在類上,該類的所有方法都有該注解功能 |
相關屬性 | pattern:指定日期時間格式字符串 |
說明:
該注解可以寫在類上或者方法上
寫在類上就是該類下的所有方法都有@ReponseBody功能
當方法上有@ReponseBody注解后
- 方法的返回值為字符串,會將其作為文本內容直接響應給前端
- 方法的返回值為對象,會將對象轉換成JSON響應給前端
此處又使用到了類型轉換,內部還是通過Converter接口的實現類完成的,所以Converter除了前面所說的功能外,它還可以實現:
- 對象轉Json數據(POJO -> json)
- 集合轉Json數據(Collection -> json)
到此這篇關于SpringMVC數據響應詳細介紹的文章就介紹到這了,更多相關SpringMVC數據響應內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot之那些注入不了的Spring占位符(${}表達式)問題
這篇文章主要介紹了SpringBoot之那些注入不了的Spring占位符(${}表達式)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04在Mac下IDEA安裝并使用protobuf方式(Java)
這篇文章主要介紹了在Mac下IDEA安裝并使用protobuf方式(Java),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11老生常談Java中List與ArrayList的區(qū)別
大家都知道List是接口,ArrayList是List接口的一個實現類,接下來通過本文給大家介紹Java中List與ArrayList的區(qū)別,需要的朋友可以參考下2022-08-08IntelliJ IDEA 2020最新激活碼(親測有效,可激活至 2089 年
這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測有效,可激活至 2089 年),非常不錯,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04Springboot2.x結合Mabatis3.x下Hikari連接數據庫報超時錯誤
本文針對Springboot2.x與Mybatis3.x結合使用時,Hikari連接數據庫出現超時錯誤的問題進行了深入分析,并提供了一系列有效的解決方法,感興趣的可以了解一下2023-11-11