Однако это отображение останавливает доступ к статическим файлам, таким как CSS, JS, изображения и т.д., Которые все находятся в /res/ папке.
Как я могу получить к ним доступ в любом случае?
Переведено автоматически
Ответ 1
Сопоставьте сервлет контроллера с более конкретным url-pattern like /pages/*, поместите статическое содержимое в определенную папку like /static и создайте Filter listening on /*, который прозрачно продолжает цепочку для любого статического содержимого и отправляет запросы сервлету контроллера для другого содержимого.
if (path.startsWith("/static")) { chain.doFilter(request, response); // Goes to default servlet. } else { request.getRequestDispatcher("/pages" + path).forward(request, response); }
Нет, это не заканчивается /pages в адресной строке браузера. Это полностью прозрачно. При необходимости вы можете создать "/static" и / или "/pages"init-param часть фильтра.
Ответ 2
С Spring 3.0.4.RELEASE и выше вы можете использовать
А затем добавьте это в свои сопоставления сервлетов, чтобы, когда кто-то переходит в корневой каталог вашего приложения, они отправлялись в index.html внутренне, а затем сопоставление будет внутренне отправлять их в сервлет, к которому вы его сопоставляете
Конечный результат: вы посещаете /Application, но вам представлен сервлет /Application / MainActions без прерывания каких-либо других корневых запросов.
Понятно? Итак, ваше приложение по-прежнему находится по вспомогательному URL, но автоматически отображается, когда пользователь переходит в корневой каталог вашего сайта. Это позволяет вам по-прежнему размещать файл /images/ bob.img в обычном месте, но "/" - это ваше приложение.
Ответ 4
Если вы используете Tomcat, вы можете сопоставить ресурсы сервлету по умолчанию: