JavaSpringMVC在页面上显示之前修改输出流

JavaSpringMVC在页面上显示之前修改输出流,java,spring,interceptor,Java,Spring,Interceptor,在Spring将输出内容刷新到页面之前,有没有合适的方法修改输出内容?当内容准备好后,我需要运行一个正则表达式来修复一级的所有链接 假设我使用拦截器,如何获取渲染内容、修改内容并将其设置回原处 public class SpringControllerInterceptor extends HandlerInterceptorAdapter { @Override public void postHandle(HttpServletRequest request, HttpSe

在Spring将输出内容刷新到页面之前,有没有合适的方法修改输出内容?当内容准备好后,我需要运行一个正则表达式来修复一级的所有链接

假设我使用拦截器,如何获取渲染内容、修改内容并将其设置回原处

public class SpringControllerInterceptor extends HandlerInterceptorAdapter {

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");

    }
}

你可以添加一个
过滤器
层来处理你的响应,你可以抓取整个响应体并处理你想要的链接你可以添加一个
过滤器
层来处理你的响应,你可以抓取整个响应体并处理你想要的链接Spring MVC拦截器就是这样做的方法之一。重写方法以更新http响应对象

void postHandle(HttpServletRequest request,
                HttpServletResponse response,
                Object handler,
                ModelAndView modelAndView)
                throws Exception
拦截处理程序的执行。在HandlerAdapter实际调用处理程序之后调用,但在DispatcherServlet呈现视图之前调用

阅读更多:


  • SpringMVC拦截器将是实现这一点的方法之一。重写方法以更新http响应对象

    void postHandle(HttpServletRequest request,
                    HttpServletResponse response,
                    Object handler,
                    ModelAndView modelAndView)
                    throws Exception
    
    拦截处理程序的执行。在HandlerAdapter实际调用处理程序之后调用,但在DispatcherServlet呈现视图之前调用

    阅读更多:


  • 让我猜猜。。。如果stackoverflow允许这么短的答案,你会回答“是的”。让我猜猜。。。如果stackoverflow允许这么短的回答,您会回答“是”。对,但在拦截器中如何获取实际呈现的内容,修改它并将其设置回?为此,您可能必须扩展类
    HttpServletResponseWrapper
    ,并在更新和发送到客户端之前使用装饰器模式获取内容。请参阅示例代码:@ViralPatel不幸的是,这种装饰器模式方法在我的案例中不起作用。我在这个问题上倾诉了我的不幸。您能提出一些建议吗?好的,但在拦截器内部,如何获取实际呈现的内容、修改内容并将其设置回原处?为此,您可能需要扩展类
    HttpServletResponseWrapper
    ,并在更新和发送到客户端之前使用decorator模式获取内容。请参阅示例代码:@ViralPatel不幸的是,这种装饰器模式方法在我的案例中不起作用。我在这个问题上倾诉了我的不幸。你能提出一些建议吗?