如何在Spring Component中访问HttpServletResponse?

时间:2018-09-14 15:20:28

标签: java spring spring-boot spring-mvc servlets

我有一个带有启动代码生成器的spring-boot应用程序。由于控制器是从摇摇欲坠的Yaml自动生成的,因此我认为我无法修改控制器以访问HttpServletResponse

是否可以从带有HttpServletResponse注释的类中访问@Component

我试图访问HttpServletResponse实例以设置cookie。

2 个答案:

答案 0 :(得分:3)

如果您根本不想触摸控制器,那就是将bean变成spring filter bean。本文为您提供了如何声明此类bean的详细信息。声明后,您需要将其绑定到指向控制器方法的url。

https://www.baeldung.com/spring-boot-add-filter

这取决于您的最终目标。

答案 1 :(得分:0)

Spring 提供了静态类 (ServletRequestAttributes),您可以使用它从应用程序的任何位置访问请求/响应:

public void method() {
        ServletRequestAttributes ra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        if (ra != null) {
            HttpServletRequest request = ra.getRequest();
            HttpServletResponse response = ra.getResponse();
        }
    }
<块引用>

ra.getRequest() 如果请求已经被处理将返回 null