在过滤器内执行并呈现JSP

在过滤器内执行并呈现JSP,jsp,servlets,servlet-filters,Jsp,Servlets,Servlet Filters,我有一个JSP,它包含页面顶部的内容,我们称之为header.JSP。出于性能原因,在构建页面的其余部分之前,我希望呈现这个JSP并将其刷新给用户。(有关性能优势的说明,请参阅。) 我认为最好的方法是创建一个名为FlushingFilter的过滤器,让它将JSP的内容写入响应,然后在执行链的其余部分之前将其清除。作为概念证明,我手动将header.jsp转换为FlushingFilter中的一组response.getWriter().println()调用,然后调用response.getWr

我有一个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,并以字符串格式返回其输出吗

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

它在过滤器中绝对可用

request.getRequestDispatcher("/WEB-INF/header.jsp").include(request, response);
response.flushBuffer();

啊,我一直在看HttpServletRequest提供的功能子集。谢谢,我会尝试一下。它是从
ServletRequest
继承的。另请参见javadocs:and。