First, when it comes to servlet mapping, priority goes like this:
- Path mapping:
/rest/*
- Extension mapping:
*.png
- Default:
/
Path mapping + extension mapping: bad idea
So you can't map static resources by their file extension within an existing path mapping (that would be a bad idea anyway, managing all static file extensions in your web.xml).
Path mapping's priority > ext mapping.
Using a filter
Set up an UrlRewriteFilter in your web.xml
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
And in your urlrewrite.xml
configuration file:
<urlrewrite default-match-type="wildcard">
<rule>
<from>/rest/images/**</from>
<to>/images/$1</to>
</rule>
</urlrewrite>
Not mapping static resources in /rest
This may not suit your needs, but this is my favorite!
Mapping static resources within /rest
says "Hey, developer, come GET/POST/PUT/DELETE thoses static resources, it's okay":
- If you can't GET/PUT/POST/DELETE those resources, then you shouldn't map them in
/rest
. It gives the wrong impression.
- If ou actually want to manipulate those resources through a REST webservice, then let Jersey do the heavy lifting and serve those resources (check out the jersey-samples for an example).