java後臺使用Spring對響應內容進行全局加密解密

大部分人的第一反應是通過 Spring 攔截器(Interceptor)中的postHandler方法處理。實際這是行不通的,因爲當程序運行到該方法,是在返回數據之後,渲染頁面之前,所以這時候 Response 中的輸出流已經關閉了,自然無法在對返回數據進行處理。

其實這個問題用幾行代碼就可以搞定,因爲 Spring 提供了非常豐富的擴展支持,無論是之前提到的InterceptorMethodArgumentResolver,還是接下來要提到的HttpMessageConverter

在 Spring MVC 的 Controller 層經常會用到@RequestBody@ResponseBody,通過這兩個註解,可以在 Controller 中直接使用 Java 對象作爲請求參數和返回內容,而完成這之間轉換作用的便是HttpMessageConverter

HttpMessageConverter接口提供了 5 個方法:

  • canRead:判斷該轉換器是否能將請求內容轉換成 Java 對象
  • canWrite:判斷該轉換器是否可以將 Java 對象轉換成返回內容
  • getSupportedMediaTypes:獲得該轉換器支持的 MediaType 類型
  • read:讀取請求內容並轉換成 Java 對象
  • write:將 Java 對象轉換後寫入返回內容

    其中readwrite方法的參數分別有有HttpInputMessageHttpOutputMessage對象,這兩個對象分別代表着一次 Http 通訊中的請求和響應部分,可以通過getBody方法獲得對應的輸入流和輸出流。

具體步驟:這裏使用的springBoot的方法進行配置

具體使用的springBoot的方法進行配置:https://suxiexingchen.github.io/2019/08/21/10/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章