org.springframework.web.filter
Class ShallowEtagHeaderFilter
java.lang.Object
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.springframework.web.filter.ShallowEtagHeaderFilter
- All Implemented Interfaces:
- Filter, BeanNameAware, DisposableBean, InitializingBean, ServletContextAware
public class ShallowEtagHeaderFilter
- extends OncePerRequestFilter
Filter that generates an ETag value based on the content on the response.
This ETag is compared to the If-None-Match header of the request. If these headers are equal,
the response content is not sent, but rather a 304 "Not Modified" status instead.
Since the ETag is based on the response content, the response (or View)
is still rendered. As such, this filter only saves bandwidth, not server performance.
- Since:
- 3.0
- Author:
- Arjen Poutsma
| Methods inherited from class org.springframework.web.filter.GenericFilterBean |
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setServletContext |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ShallowEtagHeaderFilter
public ShallowEtagHeaderFilter()
doFilterInternal
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
throws ServletException,
IOException
- Description copied from class:
OncePerRequestFilter
- Same contract as for
doFilter, but guaranteed to be
just invoked once per request. Provides HttpServletRequest and
HttpServletResponse arguments instead of the default ServletRequest
and ServletResponse ones.
- Specified by:
doFilterInternal in class OncePerRequestFilter
- Throws:
ServletException
IOException
isEligibleForEtag
protected boolean isEligibleForEtag(HttpServletRequest request,
HttpServletResponse response,
int responseStatusCode,
byte[] responseBody)
- Indicates whether the given request and response are eligible for ETag generation.
The default implementation returns true for response status codes in the 2xx series.
- Parameters:
request - the HTTP requestresponse - the HTTP responseresponseStatusCode - the HTTP response status coderesponseBody - the response body
- Returns:
true if eligible for ETag generation; false otherwise
generateETagHeaderValue
protected String generateETagHeaderValue(byte[] bytes)
- Generate the ETag header value from the given response body byte array.
The default implementation generates an MD5 hash.
- Parameters:
bytes - the response body as byte array
- Returns:
- the ETag header value
- See Also:
DigestUtils