Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想根据SpringMVC中的Http状态代码向Http响应添加一个头_Java_Spring_Http_Spring Mvc_Jakarta Ee - Fatal编程技术网

Java 我想根据SpringMVC中的Http状态代码向Http响应添加一个头

Java 我想根据SpringMVC中的Http状态代码向Http响应添加一个头,java,spring,http,spring-mvc,jakarta-ee,Java,Spring,Http,Spring Mvc,Jakarta Ee,我必须根据Http响应代码向SpringMVC中设计的RESTAPI添加缓存控制头。如果响应代码为200,则添加标题,否则不添加 我不希望客户端缓存响应,以防响应不是200 这在过滤器/拦截器中是不可能的,因为响应已经从控制器提交,所以无法更改响应状态 是否有其他方法在控制器之后添加头?您可以扩展org.springframework.web.filter.OncePerRequestFilter以添加缓存控制头 public class CacheControlHeaderFilter ext

我必须根据Http响应代码向SpringMVC中设计的RESTAPI添加缓存控制头。如果响应代码为200,则添加标题,否则不添加

我不希望客户端缓存响应,以防响应不是200

这在过滤器/拦截器中是不可能的,因为响应已经从控制器提交,所以无法更改响应状态


是否有其他方法在控制器之后添加头?

您可以扩展
org.springframework.web.filter.OncePerRequestFilter
以添加
缓存控制

public class CacheControlHeaderFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request,
                               HttpServletResponse response, FilterChain filterChain) {
        // Add the header here based on the response code
    }
}
在您的配置中将此过滤器声明为Springbean

<bean id="cacheControlHeaderFilter" class="*.*.CacheControlHeaderFilter" />

在web.xml中插入过滤器:

<filter>
    <filter-name>cacheControlHeaderFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>cacheControlHeaderFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

cacheControlHeaderFilter
org.springframework.web.filter.DelegatingFilterProxy
cacheControlHeaderFilter
/*