В первых двух главах мы поделились поддержкой Spring Boot для Restful, но интерфейс Retfful обычно возвращает только данные. При разработке веб -разработки у нас часто есть много статических ресурсов, таких как HTML, картинки, CSS и т. Д. Так как же вы возвращаете статические ресурсы на переднюю часть? Студенты, которые занимались веб -разработкой раньше, должны знать, что в рамках веб -проекта, который мы создали ранее, будет каталог WebApp. Тем не менее, Spring Boot-проекты не имеют этого каталога, так как мы должны с этим справиться?
1. Самый глупый путь
Давайте сначала поделимся самым глупым способом, который должен вернуть статические ресурсы непосредственно на передний уровень через поток. Мы создаем каталог HTML в корневом каталоге ресурсов проекта Maven, а затем размещаем файл HTML в этот каталог и указываем, что любой путь доступа начинается с / static / для доступа к статическим ресурсам в каталоге. Реализация следующая:
@Controllerpublic class staticresourcecontroller {@requestmapping ("/static/**") public void gethtml (httpservlectrequest, httpservletresponse response) {string uri = request.getRequesturi (); String [] arr = uri.split ("static/"); String resourccename = "index.html"; if (arr.length> 1) {resourceName = arr [1]; } String url = staticResourceController.class.getResource ("/"). GetPath () + "html/" + resourceName; try {FileReader Reader = new FileReader (новый файл (url)); BufferedReader BR = новый BufferedReader (читатель); StringBuilder SB = new StringBuilder (); String line = br.readline (); while (line! = null) {sb.append (line); line = br.readline (); } response.getOutputStream (). write (sb.toString (). getBytes ()); response.flushbuffer (); } catch (ioException e) {e.printstackTrace (); }}}Процесс реализации очень прост, который должен сначала отделить URI ресурса от пути, затем прочитать файл из статического каталога и вывести его на переднюю часть. Поскольку это только простая демонстрация, здесь обрабатываются только файлы текстового типа, а файлы изображений могут обрабатываться аналогичным образом. Конечно, мы определенно не будем делать это в реальности, и Spring Boot определенно будет иметь лучшую решение. Однако, хотя этот метод немного глуп, это действительно самое важное. Независимо от того, насколько удобна структура, помогает нам справиться с такой проблемой, но помимо структуры, мы все равно должны иметь возможность писать веб -проект. Только зная принцип реализации, вы сможете иметь возможность справляться с проблемами, когда вы сталкиваетесь с проблемами. Теперь давайте посмотрим на поддержку Spring Boot для статических ресурсов.
2. Метод статического доступа к ресурсам по умолчанию Spring Boot
Spring Boot может напрямую доступ к файлам в четырех каталогах по умолчанию:
ClassPath:/public/
ClassPath:/resources/
ClassPath:/static/
ClassPath:/Meta-Info/Resouces/
Теперь мы создаем следующие четыре каталога в каталоге ресурсов ресурсов:
Обратите внимание, что ресурсы папки ресурсов под синей панелью отличаются от папки ClassPath:/Resources в ClassPath. Ресурсы под синей панелью представляют, что файлы в каталоге являются файлами ресурсов. При упаковке все файлы в каталоге будут упакованы. Это имя можно изменить. Вы можете указать каталог ресурсов в pom.xml:
<sorronse> <sersource> <cilectory> src/main/resources </directory> </resource> </resources>
Ресурсы в рамках Classpath являются одной из статических папок ресурсов по умолчанию пружинного ботинка, а функции совпадают с общественностью, статичным и мясо-инфу/ресурсами. Теперь мы можем перезапустить Spring Boot, и мы можем пройти
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
Четыре URL -адреса получают доступ к статическим ресурсам в соответствии с четырьмя каталогами.
3. Настройка Статического каталога ресурсов
Через второй раздел мы уже знаем каталог статических ресурсов, к которому Spring Boot может получить доступ по умолчанию, но все обязательно подумают, фиксирован ли этот каталог? Можем ли мы сами определить каталоги статических ресурсов? Ответ да. Теперь мы настраиваем статический каталог ресурсов. Мы определяем каталог изображений для хранения изображений. All /Image /** Путь будет получать доступ к ресурсам в каталоге изображений:
@ConfigurationPublic Class ImageMvcConfig Extends webmvcconfigurerAdapter {@override public void addresourcehandlers (реестр ресурсов) {registry.addresourcehandler ("/image/**") .Addresourcelocations ("classpath:/Images/"); }}Этот код должен быть относительно простым. @Configuration идентифицирует класс конфигурации, который упоминался много раз в предыдущей статье. WebMVCConfigurerAdapter - это адаптер для настройки MVC, предоставленного Spring. Он имеет много методов конфигурации. Addresourcehandlers - это метод, который специализируется на обработке статических ресурсов. Мы поговорим о других методах позже. Теперь мы проверяем, действительна ли вышеуказанная конфигурация. Я поместил изображение Spring.jpg в каталог изображений. Теперь мы получаем доступ к изображению через http: // localhost: 8080/image/spring.jpg:
Фактически, в дополнение к вышеуказанному методу, существует еще один более простой метод, который должен настраивать его непосредственно в Application.yml:
Весна: MVC: Static-Path-Pattern:/Image/** Ресурсы: Статические локации: ClassPath:/Images/
Статический паттерн: режим доступа, по умолчанию /**, несколько можно разделить с помощью запятой
Статические локации: каталог ресурсов, разделенный с запятыми с помощью нескольких каталогов, каталог ресурсов по умолчанию-ClassPath:/meta-Inf/Resources/, ClassPath:/Resources/, ClassPath:/Static/, ClassPath:/public/
Обратите внимание, что эта конфигурация будет перезаписать каталог статических ресурсов по умолчанию Spring Boot. Например, если он настроен в примере, вы больше не можете получать доступ к ресурсам в статических, общественных, ресурсах и т. Д.
4. Резюме
Эта статья в основном делится с вами, как Spring Boot обрабатывает статические ресурсы. Spring Boot может получить доступ к статическим ресурсам в соответствии с четырьмя каталогами: ClassPath:/Meta-Inf/Resources/, ClassPath:/Resources/, ClassPath:/Static/, ClassPath:/public/по умолчанию. Мы также можем персонализировать конфигурацию в соответствии с нашими потребностями. Наконец, следует отметить, что если в этих четырех каталогах есть ресурсы с тем же именем, какой каталог будет возвращать ресурсы, под каким каталогом будет возвращен первым? Вы должны быть в состоянии угадать порядок по умолчанию статических локаций. По умолчанию Spring Boot будет возвращать ресурсы под /meta-inf /resources в первую очередь. Конечно, поскольку мы можем настроить значение статических локаций, этот приоритет также может быть скорректирован.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.