springmvc返回json
現在很多專案已經前後端分離了,不再使用jsp或者使用jsp但是資料使用ajax來獲取,實現區域性重新整理的效果,那麼springmvc中如何不返回頁面而返回頁面所需要的資料呢。
前後端資料互動現在大多使用json來表示(當然有一部分還是使用xml的),那如何在springmvc中返回json資料呢。
返回json依賴<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.3</version></dependency>
介面層面的改動在controller返回時不再返回ModelAndView,而是返回具體的資料物件,在方法上新增@ResponseBody註解
@ResponseBody@RequestMapping("/testJson")public User testJson(){ User user = new User(); user.setName("張三"); user.setId(2); return user;}
Why?
為什麼只是加了一個依賴,加一個註解就可以完成返回json資料呢。
這裡用到了一個介面,HttpMessageConverter介面,該介面可以將請求資訊轉為所對應的入參,將返回結果轉為對應型別的響應資訊
public interface HttpMessageConverter<T> { boolean canRead(Class<?> var1, MediaType var2); boolean canWrite(Class<?> var1, MediaType var2); List<MediaType> getSupportedMediaTypes(); T read(Class<? extends T> var1, HttpInputMessage var2) throws IOException, HttpMessageNotReadableException; void write(T var1, MediaType var2, HttpOutputMessage var3) throws IOException, HttpMessageNotWritableException;}
spring提供了兩種方式
使用@RequestBody或@ResponseBody對處理的方法進行處理使用HttpEntity/ResponseEntity作為方法的入參或返回值
最新評論