当前位置: 首页 > 面试题库 >

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

祖迪
2023-03-14
问题内容

我一直在搜索网络和stackoverflow,以获取有人使用servlet过滤器将内容插入响应中的示例,但只能找到人们捕获/压缩输出和/或更改标题的示例。我的目标是在所有HTML响应的结束


问题答案:

我正在使用的代码库在处理响应时调用getOutputStream方法,而不是getWriter,因此其他答案中包含的示例无济于事。如果对写入器进行了两次访问,这是一个更完整的答案,可以同时用于OutputStream和PrintWriter,甚至可以正确地进行错误处理。这是从一个很好的示例中得出的,即使用JAVAX.SERVLET.FILTER进行DUMP请求和响应。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class MyFilter implements Filter
{
    private FilterConfig filterConfig = null;

    private static class ByteArrayServletStream extends ServletOutputStream
    {
        ByteArrayOutputStream baos;

        ByteArrayServletStream(ByteArrayOutputStream baos)
        {
            this.baos = baos;
        }

        public void write(int param) throws IOException
        {
            baos.write(param);
        }
    }

    private static class ByteArrayPrintWriter
    {

        private ByteArrayOutputStream baos = new ByteArrayOutputStream();

        private PrintWriter pw = new PrintWriter(baos);

        private ServletOutputStream sos = new ByteArrayServletStream(baos);

        public PrintWriter getWriter()
        {
            return pw;
        }


 类似资料:
  • 我在net和stackoverflow中搜索了一个使用servlet过滤器将内容插入响应的示例,但只能找到捕获/压缩输出和/或更改头部的示例。我的目标是在所有HTML响应的结束之前追加一个HTML块。 我正在研究一个解决方案,它扩展HttpServletResponseWrapper以使用我自己的PrintWriter,然后重写它上的write方法。在write方法中,我存储了最后7个字符,以查看

  • 我有下面的servlet过滤器。

  • 我正在研究一个合作医疗系统。 我的代码在url调用的servlet的

  • 我想在Spring Security过滤器中修改响应的内容。假设我想要的如下: 过滤器后面有一个REST服务,它检索字符串列表。如果我使用getOutputStream()进行写入,那么我可以在客户端上读取字符串列表(而不是字符串“Hello”)。如果我使用getWriter(),那么我会收到以下错误: 如何修改Spring安全过滤器中的响应内容?顺便说一句,我使用野蝇10,但它也应该适用于雄猫和

  • 这可能起作用,但由于某种原因,数据基本上是空的。我猜原因是因为过滤器不起作用。 我不太清楚如何包装Servlet过滤器,因为它们与Jersey ContainerRequestFilter期望不同的输入和输出。JerseyConfig中的以下实现似乎什么也不做,因为日志没有指示筛选器正在注册,而且在调试模式下不能中断这些文件中的行。

  • 在检查完成之前,我是否必须在包装器中捕获一些东西以防止响应发送到客户机?