在Filter中执行并呈现JSP

Fur*_*rge 3 jsp servlets servlet-filters

我有一个包含页面顶部内容的JSP,我们称之为header.jsp.出于性能原因,我想在构建页面的其余部分之前呈现此JSP并将其刷新给用户.(有关性能优势的解释,请参见此处.)

我能想到的最好的方法是创建一个名为FlushingFilter的过滤器,让它将JSP的内容写入响应,然后在执行链的其余部分之前将其清除.作为一个概念验证,我手动将header.jsp转换为我的FlushingFilter内的一堆response.getWriter().println()调用,之后我调用response.getWriter().flush()然后调用doFilter()继续过滤链.这个println()设置产生了所需的行为,页面速度要快得多.

但是在启动之前,我希望通过以编程方式调用过滤器内部的JSP而不必使用手动println()调用来使其更清晰.我发现的最接近的解决方案是这个问题的第一个答案,但它涉及在RequestDispatcher上调用include()方法.据我所知,我无法访问我的过滤器中的任何RequestDispatcher,尽管这可能只是我的JSP/servlet经验不足.

有谁知道如何以编程方式调用这样的JSP,并以String格式返回其输出?

Bal*_*usC 6

我知道,我无法访问我的过滤器中的任何RequestDispatcher,尽管这可能只是我的JSP/servlet缺乏经验的谈话

它绝对适用于过滤器.

request.getRequestDispatcher("/WEB-INF/header.jsp").include(request, response);
response.flushBuffer();
Run Code Online (Sandbox Code Playgroud)