diff --git a/spring-framework-reference/src/mvc.xml b/spring-framework-reference/src/mvc.xml index dc7e0b7e4f..35191f79d0 100644 --- a/spring-framework-reference/src/mvc.xml +++ b/spring-framework-reference/src/mvc.xml @@ -3354,6 +3354,69 @@ public class SimpleController { ]]> +
+ mvc:resources + + This tag allows static resource requests following a particular URL pattern to be served by a ResourceHttpRequestHandler from + any of a list of Resource locations. This provides a convenient way to serve static resources from locations other than the + web application root, including locations on the classpath, and the resources are served with far future expiration headers (1 year, as recommended by + optimization tools such as Page Speed and YSlow) so that they will be more efficiently utilized by the client. For example, to serve resource requests + with a URL pattern of /resources/** from a public-resources directory within the web application root, the tag would be used + as follows: + + ]]> + + + The mapping attribute must be an Ant pattern that can be used by SimpleUrlHandlerMapping, and the location + attribute must specify one or more valid resource directory locations. Multiple resource locations may be specified using a comma-seperated list of values. + The locations specified will be checked in the specified order for the presence of the resource for any given request. For example, to enable the serving + of resources from both the web application root and from a known path of /META-INF/public-web-resources/ in any jar on the classpath, the tag + would be specified as: + + ]]> + + + When serving resources that may change when a new version of the application is deployed, it is recommended that you incorporate a version string into the + mapping pattern used to request the resources, so that you may force clients to request the newly deployed version of your application's resources. Such a + version string can be parameterized and accessed using SpEL so that it may be easily managed in a single place when deploying new versions. + + + As an example, let's consider an application that uses a performance-optimized custom build (as recommended) of the Dojo JavaScript library in production, and that the build is generally + deployed within the web application at a path of /public-resources/dojo/dojo.js. Since different parts of Dojo may be incorporated into the + custom build for each new version of the application, the client web browsers need to be forced to re-download that custom-built dojo.js resource + any time a new version of the application is deployed. A simple way to achieve this would be to manage the version of the application in a properties file, + such as: + + + + + and then to make the properties file's values accessible to SpEL as a bean using the util:properties tag: + + ]]> + + + With the application version now accessible via SpEL, we can incorporate this into the use of the resources tag: + + ]]> + + + and finally, to request the resource with the proper URL, we can take advantage of the Spring JSP tags: + + + + + + + +]]> + +
More Spring Web MVC Resources