package me.test.first.spring.rs.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CacheControlInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
private String defaultCacheControl = "private, max-age=0";
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
int status = response.getStatus();
if (request.getMethod().equalsIgnoreCase(HttpMethod.GET.name())
&& status >= 200 && status < 300
//&& status != 206
&& StringUtils.isBlank(response.getHeader("Cache-Control"))) {
response.setHeader("Cache-Control", defaultCacheControl);
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
public String getDefaultCacheControl() {
return defaultCacheControl;
}
public void setDefaultCacheControl(String defaultCacheControl) {
Assert.notNull(defaultCacheControl, "defaultCacheControl can not be null");
this.defaultCacheControl = defaultCacheControl;
}
}