我一直在搜索網絡和stackoverflow,以獲取有人使用servlet過濾器將內容插入響應中的示例,但只能找到人們捕獲/壓縮輸出和/或更改標題的示例。我的目標是在所有HTML響應的結束</ body>之前添加一塊HTML。我正在研究一種擴展HttpServletResponseWrapper以使用我自己的PrintWriter,然后覆蓋其上的write方法的解決方案。在write方法內部,我存儲了最后7個字符,以查看其是否等于結束body標簽,然后在繼續其余文檔的正常寫入操作之前,先編寫HTML塊加上close body標簽。我覺得一定有人已經解決了這個問題,而且可能比我更優雅。我將感謝有關如何使用servlet過濾器將內容插入響應的任何示例。更新響應評論,我還嘗試從http://www.oracle.com/technetwork/java/filters-137243.html實現CharResponseWrapper 。這是我的代碼:PrintWriter out = response.getWriter();CharResponseWrapper wrappedResponse = new CharResponseWrapper( (HttpServletResponse)response);chain.doFilter(wrappedRequest, wrappedResponse);String s = wrappedResponse.toString();if (wrappedResponse.getContentType().equals("text/html") && StringUtils.isNotBlank(s)) { CharArrayWriter caw = new CharArrayWriter(); caw.write(s.substring(0, s.indexOf("</body>") - 1)); caw.write("WTF</body></html>"); response.setContentLength(caw.toString().length()); out.write(caw.toString());}else { out.write(wrappedResponse.toString());}out.close();我也在包裝請求,但是該代碼有效,并且不應影響響應。
添加回答
舉報
0/150
提交
取消