【问题标题】:Taking over for JspWriter接管 JspWriter
【发布时间】:2009-07-31 03:01:44
【问题描述】:

提前感谢大家-

我还没有找到一种简单的方法来做到这一点,但是,是否可以接管写入 JspWriter 的数据(标题和所有内容)的处理?有点像动态管理缓冲区然后控制输出到 JspWriter 的联络员?我遇到了重定向问题,由于我的一些包含,状态标头已经被刷新(我认为它是包含,但不管它肯定会刷新缓冲区)。

我知道设置缓冲区大小等

我没有使用框架,只是tomcat上的纯jsp。

谢谢,

山姆

【问题讨论】:

    标签: java jsp tomcat


    【解决方案1】:

    您可以尝试编写 Filter 并将其映射以拦截您的 JSP:

    (excerpt from web.xml)
    <filter>
      <filter-name>jspFilter</filter-name>
      <filter-class>com.mypackage.JspFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>jspFilter</filter-name>
      <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    

    在您的doFilter() 方法实现中,您可以通过扩展HttpServletResponseWrapper 并覆盖其getWriter() / getOutputStream() 方法以使用StringWriter 来缓冲响应,从而将servlet 响应包装到您自己的响应中。在您调用 doFilter() 方法并返回(或引发异常)后,您可以对缓冲的响应做任何您想做的事情 - 打印它,重定向到另一个页面,您有什么。

    【讨论】:

    • 再次感谢您的回复-我找到了这段代码,我认为它可以满足您的要求:docstore.mik.ua/orelly/xml/jxslt/… 我可以在 jsp 的上下文中执行此操作吗(即。 )?例如: jspFilterjspfilter.jspjspFilter-name> *.jsp 另外,doFilter() 什么时候实际被调用,它实际放置在哪里?谢谢,山姆
    • 是的,上面链接中的BufferedHttpResponseWrapper 就是我所说的。我不确定“在 jsp 的上下文中覆盖”是什么意思 - 你想将过滤器实现为 JSP?那是做不到的,它必须是一个java类。您的链接中有一个示例(MyFilter),您也可以在这里查看:java.sun.com/javaee/5/docs/tutorial/doc/bnagb.html 已编译的过滤器类必须部署为您的 Web 应用程序的一部分(您可以将其放在 /WEB-INF/classes 中), servlet 容器(Tomcat)会自动调用 doFilter() 方法。
    • 不客气,祝你的项目好运。纯粹出于好奇 - 你发布的那个链接是随机的谷歌搜索结果还是你来自乌克兰?
    猜你喜欢
    • 2010-10-04
    • 2010-12-31
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2012-10-23
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多