SPR-7116 - javadocs
This commit is contained in:
parent
af0fac9099
commit
c1246d506c
|
|
@ -37,7 +37,23 @@ import org.springframework.web.servlet.view.ContentNegotiatingViewResolver;
|
||||||
* {@link HttpRequestHandler} that serves static resources optimized for superior browser performance
|
* {@link HttpRequestHandler} that serves static resources optimized for superior browser performance
|
||||||
* (according to the guidelines of Page Speed, YSlow, etc.) by adding far future cache expiration headers.
|
* (according to the guidelines of Page Speed, YSlow, etc.) by adding far future cache expiration headers.
|
||||||
*
|
*
|
||||||
* <p>TODO - expand the docs further
|
* <p>The constructor takes a list of Spring {@link Resource} locations from which static resources are allowed
|
||||||
|
* to be served by this handler. For a given request, the list of locations will be consulted in order for the
|
||||||
|
* presence of the requested resource, and the first found match will be written to the response, with {@code
|
||||||
|
* Expires} and {@code Cache-Control} headers set for one year in the future. The handler also properly evaluates
|
||||||
|
* the {@code Last-Modified} header (if present) so that a {@code 304} status code will be returned as appropriate,
|
||||||
|
* avoiding unnecessary overhead for resources that are already cached by the client. The use of {@code Resource}
|
||||||
|
* locations allows resource requests to easily be mapped to locations other than the web application root. For
|
||||||
|
* example, resources could be served from a classpath location such as "classpath:/META-INF/public-web-resources/",
|
||||||
|
* allowing convenient packaging and serving of resources such as a JavaScript library from within jar files.
|
||||||
|
*
|
||||||
|
* <p>To ensure that users with a primed browser cache get the latest changes to application-specific resources
|
||||||
|
* upon deployment of new versions of the application, it is recommended that a version string is used in the URL
|
||||||
|
* mapping pattern that selects this handler. Such patterns can be easily parameterized using Spring EL. See the
|
||||||
|
* reference manual for further examples of this approach.
|
||||||
|
*
|
||||||
|
* <p>Rather than being directly configured as a bean, this handler will typically be configured through use of
|
||||||
|
* the <code><mvc:resources/></code> Spring configuration tag.
|
||||||
*
|
*
|
||||||
* @author Keith Donald
|
* @author Keith Donald
|
||||||
* @author Jeremy Grelle
|
* @author Jeremy Grelle
|
||||||
|
|
@ -53,12 +69,28 @@ public class ResourceHttpRequestHandler implements HttpRequestHandler, ServletCo
|
||||||
|
|
||||||
private FileMediaTypeMap fileMediaTypeMap;
|
private FileMediaTypeMap fileMediaTypeMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new {@code ResourceHttpRequestHandler} with a {@code List} of {@code Resource} paths to use as
|
||||||
|
* sources for serving static resources.
|
||||||
|
* @param resourcePaths the list of paths from which resources can be served
|
||||||
|
*/
|
||||||
public ResourceHttpRequestHandler(List<Resource> resourcePaths) {
|
public ResourceHttpRequestHandler(List<Resource> resourcePaths) {
|
||||||
Assert.notNull(resourcePaths, "Resource paths must not be null");
|
Assert.notNull(resourcePaths, "Resource paths must not be null");
|
||||||
validateResourcePaths(resourcePaths);
|
validateResourcePaths(resourcePaths);
|
||||||
this.resourcePaths = resourcePaths;
|
this.resourcePaths = resourcePaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes a resource request.
|
||||||
|
*
|
||||||
|
* <p>Checks for the existence of the requested resource in the configured list of locations. If the resource
|
||||||
|
* does not exist, a {@code 404} response will be returned to the client. If the resource exists, the request will
|
||||||
|
* be checked for the presence of the {@code Last-Modified} header, and its value will be compared against the last
|
||||||
|
* modified timestamp of the given resource, returning a {@code 304} status code if the {@code Last-Modified} value
|
||||||
|
* is greater. If the resource is newer than the {@code Last-Modified} value, or the header is not present, the
|
||||||
|
* content resource of the resource will be written to the response with caching headers set to expire one year in
|
||||||
|
* the future.
|
||||||
|
*/
|
||||||
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
if (!"GET".equals(request.getMethod())) {
|
if (!"GET".equals(request.getMethod())) {
|
||||||
throw new HttpRequestMethodNotSupportedException(request.getMethod(),
|
throw new HttpRequestMethodNotSupportedException(request.getMethod(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue