In den ersten beiden Kapiteln haben wir die Unterstützung von Spring Boot für Pastful geteilt, aber die erholsame Schnittstelle gibt normalerweise nur Daten zurück. Bei der Webentwicklung haben wir oft viele statische Ressourcen wie HTML, Bilder, CSS usw. Wie geben Sie also statische Ressourcen an das Frontend zurück? Studenten, die zuvor Webentwicklung durchgeführt haben, sollten wissen, dass es im Rahmen des von uns erstellten Webprojekts ein WebApp -Verzeichnis geben wird, und wir können direkt darauf zugreifen, indem wir statische Ressourcen in diesem Verzeichnis platzieren. Spring-Boot-basierte Projekte haben dieses Verzeichnis jedoch nicht. Wie sollen wir damit umgehen?
1. Der dümmste Weg
Lassen Sie uns zunächst die dümmste Art und Weise teilen, die die statischen Ressourcen direkt durch den Stream zum Front-End zurückgeben. Wir erstellen ein HTML -Verzeichnis im Root -Verzeichnis der Ressourcen des Maven -Projekts und platzieren dann die HTML -Datei in diesem Verzeichnis und geben an, dass jeder Zugriffspfad mit / statisch / statisch beginnt, um auf die statischen Ressourcen im Verzeichnis zuzugreifen. Die Implementierung ist wie folgt:
@ControllerPublic Class staticResourceController {@RequestMapPing ("/static/**") public void gethtml (httpServletRequest -Anfrage, httpServletResponse -Antwort) {String uri = Request.getRequesturi (); String [] arr = uri.split ("static/"); String Resourcename = "index.html"; if (arr.length> 1) {ressourcename = arr [1]; } String url = staticResourceController.class.getResource ("/"). GetPath () + "html/" + ressourcename; try {fileReader reader = new FileReader (neue Datei (URL)); BufferedReader BR = New BufferedReader (Leser); StringBuilder sb = new StringBuilder (); String line = br.readline (); while (line! = null) {sb.append (line); line = br.readline (); } response.getOutputStream (). Schreiben (sb.toString (). getBytes ()); Antwort.FlushBuffer (); } catch (ioException e) {e.printstacktrace (); }}}Der Implementierungsprozess ist sehr einfach, um zuerst die Ressourcen -URI vom Pfad zu trennen, dann die Datei aus dem statischen Verzeichnis zu lesen und sie bis zum vorderen Ende auszugeben. Da es sich nur um eine einfache Demonstration handelt, werden hier nur Text-Typ-Dateien verarbeitet, und Bilddateien können ähnlich verarbeitet werden. Natürlich werden wir dies definitiv nicht in der Realität tun, und Spring Boot wird definitiv eine bessere Lösung haben. Obwohl diese Methode etwas dumm ist, ist sie in der Tat das Wesentliche. Unabhängig davon, wie bequem das Framework uns hilft, mit dieser Art von Problem umzugehen, aber abgesehen vom Framework müssen wir immer noch in der Lage sein, ein Webprojekt kompetent zu schreiben. Nur wenn Sie das Implementierungsprinzip kennen, können Sie in der Lage sein, Probleme zu bewältigen, wenn Sie auf Probleme stoßen. Schauen wir uns nun die Unterstützung von Spring Boot für statische Ressourcen an.
2. Spring Boot Standard statische Ressourcenzugriffsmethode
Spring Start kann standardmäßig in vier Verzeichnissen direkt zugreifen:
Klassenpfad:/öffentlich/
Klassenpfad:/Ressourcen/
Klassenpfad:/statisch/
CLASSPATH:/meta-info/resouces/
Wir erstellen jetzt die folgenden vier Verzeichnisse im Ressourcendatei -Ressourcenverzeichnis:
Beachten Sie, dass sich die Ressourcenordnerressourcen unter der Blue -Leiste vom Ordner ClassPath:/Ressourcen unter dem Klassenpfad unterscheiden. Die Ressourcen unter der Blue -Leiste stellen dar, dass die Dateien im Verzeichnis Ressourcendateien sind. Bei der Verpackung werden alle Dateien im Verzeichnis verpackt. Dieser Name kann geändert werden. Sie können das Ressourcenverzeichnis in pom.xml angeben:
<ressourcen> <ressourcen> <Direcidory> src/main/ressourcen </dankitor> </ressourcen> </ressourcen>
Die Ressourcen unter dem Klassenpfad sind eine der Standardordnungen für statische Ressourcen von Spring Boot, und die Funktionen sind die gleichen wie öffentliche, statische und Fleischinfo/Ressourcen. Jetzt können wir Spring Stiefel neu starten und können passieren
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
Vier URLs greifen unter vier Verzeichnissen auf statische Ressourcen zu.
3. Passen Sie das statische Ressourcenverzeichnis an
Im zweiten Abschnitt kennen wir bereits das Verzeichnis der statischen Ressourcen, auf die Spring Boot standardmäßig zugreifen kann, aber jeder wird definitiv denken: Ist dieses Verzeichnis repariert? Können wir selbst statische Ressourcenverzeichnisse definieren? Die Antwort lautet ja. Wir passen jetzt ein statisches Ressourcenverzeichnis an. Wir definieren ein Images -Verzeichnis, um Bilder zu speichern. Alle Pfade /** Pfade zugreifen im Bilderverzeichnis auf Ressourcen:
@ConfigurationPublic Class Imagemvcconfig erweitert webmvcconFigurerAdapter {@Override public void addResourceHandlers (RessourcenHandlerRegistry -Registrierung) {Registry.AddresourceHandler ("/Image/**") .Addrosourcelocations ("ClassPath:/Images/"); }}Dieser Code sollte relativ einfach sein. @Configuration identifiziert eine Konfigurationsklasse, die im vorherigen Artikel mehrfach erwähnt wurde. WebMVCConFigurerAdapter ist ein Adapter für die Konfiguration von MVC, die von Spring bereitgestellt werden. Es verfügt über viele Konfigurationsmethoden. AddResourceHandlers ist eine Methode, die sich auf den Umgang mit statischen Ressourcen spezialisiert hat. Wir werden später über andere Methoden sprechen. Jetzt überprüfen wir, ob die obige Konfiguration gültig ist. Ich habe ein Spring.jpg -Bild in das Images -Verzeichnis gestellt. Jetzt greifen wir über http: // localhost: 8080/image/spring.jpg:
Tatsächlich gibt es zusätzlich zur obigen Methode eine weitere einfachere Methode, bei der es direkt in application.yml konfiguriert wird:
Frühling: MVC: statisches Path-Pattern:/Image/** Ressourcen: Statische Lokationen: ClassPath:/Bilder/
Static-Path-Pattern: Zugriffsmodus, Standard ist /**, mehrere können durch Komma getrennt werden
Statische Lokationen: Ressourcenverzeichnis, von mehreren Verzeichnissen gesetzlich durch Komma, das Standard-Ressourcenverzeichnis ist ClassPath:/meta-inf/ressourcen/, classPath:/ressourcen/, classPath:/static/, classPath:/public/
Beachten Sie, dass diese Konfiguration das statische statische Ressourcenverzeichnis von Spring Boot überschreibt. Wenn Sie beispielsweise im Beispiel konfiguriert sind, können Sie in statischen, öffentlichen, Ressourcen usw. keine Ressourcen mehr zugreifen.
4. Zusammenfassung
Dieser Artikel teilt Ihnen hauptsächlich mit, wie Spring Boot statische Ressourcen behandelt. Spring Boot kann unter den vier Verzeichnissen auf statische Ressourcen zugreifen: ClassPath:/meta-inf/ressourcen/, classPath:/ressourcen/, classPath:/static/, classPath:/public/standardmäßig. Wir können die Konfiguration auch entsprechend unseren Anforderungen personalisieren. Schließlich sollte beachtet werden, dass, wenn es in diesen vier Verzeichnissen Ressourcen mit demselben Namen gibt, welches Verzeichnis die Ressourcen unter welchem Verzeichnis zuerst zurückgegeben werden? Sie sollten in der Lage sein, die Standardreihenfolge der statischen Lokationen zu erraten. Standardmäßig gibt Spring Boot zuerst Ressourcen unter /meta-inf /ressourcen zurück. Da wir den Wert von statischen Lokationen anpassen können, kann diese Priorität natürlich auch angepasst werden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.