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, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, 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, setEnvironment, 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