Web resources are any software artifacts that the web application requires for proper rendering, including images, script files, and any user-created component libraries. Resources must be collected in a standard location, which can be one of the following.
A resource packaged in the web application root must be in a subdirectory of a resources directory at the web application root: resources/resource-identifier.
A resource packaged in the web application’s classpath must be in a subdirectory of the META-INF/resources directory within a web application: META-INF/resources/resource-identifier. You can use this file structure to package resources in a JAR file bundled in the web application. See Chapter 53, Duke's Forest Case Study Example for an application that uses this mechanism.
The JavaServer Faces runtime will look for the resources in the preceding listed locations, in that order.
Resource identifiers are unique strings that conform to the following format:
Elements of the resource identifier in brackets () are optional, indicating that only a resource-name, which is usually a file name, is a required element. For example, the most common way to specify a style sheet, image, or script is to use the library and name attributes, as in the following tag from the guessnumber example:
<h:outputStylesheet library="css" name="default.css"/>
This tag specifies that the default.css style sheet is in the directory web/resources/css.
You can also specify the location of an image using the following syntax, also from the guessnumber example:
This tag specifies that the image named wave.med.gif is in the directory web/resources/images.
Resources can be considered as a library location. Any artifact, such as a composite component or a template that is stored in the resources directory, becomes accessible to the other application components, which can use it to create a resource instance.