如何在Http Servlet 請求中保留POST 正文參數
在Java servlet 中處理HTTP 請求時,必須考慮以下影響存取過濾器鏈中進一步處理的請求參數。預設情況下,從 POST 請求正文中讀取參數會消耗它們,使後續過濾器或處理程序無法使用它們。
問題:消耗 POST 請求正文參數
在 Java servlet 中,請求主體參數可以透過 request.getParameter() 存取。但是,此方法會消耗 inputStream,因此後續檢索參數的嘗試將會失敗。對於需要在下游處理程序使用參數之前存取參數的過濾器來說,此行為尤其成問題。
解決方案:擴充 HttpServletRequestWrapper
要解決此問題,我們可以擴充 HttpServletRequestWrapper 以建立快取請求正文的自訂請求實作。這允許我們多次讀取正文而不消耗它。
這是一個範例實作:
用法:
保留 POST body 參數,我們可以將原始請求包裝在 MultiReadHttpServletRequest中,然後再透過過濾器傳遞chain:
透過使用這種方法,我們可以多次存取 POST 主體參數,而不必擔心過早地消耗它們。
以上是如何在 Java Servlet 中保留 POST 正文參數以供多次讀取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!