То, что вы хотите сделать, это присвоить отображение сервлета * .css JSPServlet.
В большинстве контейнеров вы увидите такое отображение (это из Glassfish, в default-web.xml):
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
Здесь он объявляет сервлет JSP и отображает в нем «* .jsp». Таким образом, в этом случае ссылочное имя сервлета JSP будет просто 'jsp'.
Итак, вы хотели бы добавить:
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
Когда вы делаете это, «внезапно» ВСЕ ваши CSS-файлы, по сути, являются JSP, поэтому вы можете делать с ними все, что захотите.
Подробности в том, что я не знаю, одинаково ли jsp для ВСЕХ контейнеров, поэтому ваш web.xml МОЖЕТ НЕ быть переносимым.
Но это суть того, что вы хотите сделать. Если вы не хотите, чтобы ВСЕ CSS были JSP, вы можете поместить файлы в их собственный каталог и сопоставить их с сервлетом JSP. Тогда ВСЕ, что вы вставите, будет JSP (css, js и т. Д.)