Статичні ресурси - це елементи веб-програми, які є статичними. Ось так просто. Тобто, це файли, які не змінюються протягом виконання програми, такі як CSS-стилі, HTML-сторінки, скрипти JavaScript, зображення і т.п. Все б нічого, але, виявляється, Spring MVC не вміє їх обробляти, якщо йому в цьому не допомогти.
Справа в тому, що по-замовчуванню, статичні запити обробляє так званий
DefaultServlet, який створюється самим сервером і який привязаний до адреси
/, тобто до кореневої папки веб-програми (web application root). Якщо програма отримала запит (request) і для нього зареєстровано відповідний сервлет в файлі web.xml, то цей сервлет буде викликано для обробки запиту. А коли відповідного сервлету не зареєстровано, запит буде оброблено згаданим "сервлетом по-замовчуванню" (
java-allandsundry.com). Це він знає, як обробляти запити до статичних ресурсів.
Але згідно концепції Spring MVC феймворку, коренева папка веб-програми закріплена за так званим фронт-контролером, який називається DispatcherServlet (див. метод getServletMappings()):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| public class MusicBoxDispatcherServlet
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
/*
* DispatcherServlet loads beans containing web components
* such as controllers, view resolvers, and handler mappings
* that are defined in the SpringAppConfig configuration
* class (using Java configuration).
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { SpringAppConfig.class };
}
}
|