为了账号安全,请及时绑定邮箱和手机立即绑定

寻找一个使用servlet过滤器将内容插入响应中的示例

寻找一个使用servlet过滤器将内容插入响应中的示例

饮歌长啸 2019-11-14 10:07:12
我一直在搜索网络和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();我也在包装请求,但是该代码有效,并且不应影响响应。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信