这取决于您想要什么。通常,您的样本虽然不正确。之后chain.doFilter又回来了,这是来不及做的任何回应。此时,整个响应已发送到客户端,您的代码无法访问它。
您需要做的是包装request和/或包装response到您自己的类中,将这些包装传递给doFilter方法,并处理包装中的所有处理。
为了使其更容易,servlet api中已经提供了包装器:
seeHttpServletRequestWrapper和HttpServletResponseWrapperclasses。如果要处理实际发送到客户端的输出,则还需要编写自定义OutputStream或Writer包装器,并从
HttpServletResponse包装器返回这些包装器。是的,很多包装:)
一些更简单的过滤器可以在不包装请求或响应的情况下工作:例如,在调用之前doFilter,您已经可以访问请求标头,或者可以在不调用的情况下发送自定义响应
doFilter。但是,如果要处理请求正文,则不能只读取它,否则它将无法用于链的其余部分。在这种情况下,您需要再次使用包装技术。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)