Dans les deux premiers chapitres, nous avons partagé la prise en charge de Spring Boot pour Restful, mais l'interface Restful ne renvoie généralement que des données. Lorsque vous faites du développement Web, nous avons souvent beaucoup de ressources statiques, telles que HTML, images, CSS, etc. Alors, comment renvoyez-vous les ressources statiques à l'avant? Les étudiants qui ont déjà fait du développement Web devraient savoir qu'il y aura un répertoire WebApp dans le cadre du projet Web que nous avons créé auparavant, et nous pouvons y accéder directement en plaçant des ressources statiques dans ce répertoire. Cependant, les projets basés sur Spring Boot n'ont pas ce répertoire, alors comment devons-nous y faire face?
1. La manière la plus stupide
Partageons d'abord la manière la plus stupide, qui est de retourner les ressources statiques directement vers l'avant à travers le flux. Nous créons un répertoire HTML dans le répertoire racine des ressources du projet Maven, puis nous plaçons le fichier HTML dans ce répertoire, et spécifions que tout chemin d'accès commence par / statique / est d'accéder aux ressources statiques dans le répertoire. La mise en œuvre est la suivante:
@ControllerPublic class staticresourceController {@RequestMapping ("/ static / **") public void gethtml (httpservletRequest request, httpservletResponse réponse) {String uri = request.getRequeSturi (); String [] arr = uri.split ("statique /"); String ResourceName = "index.html"; if (arr.length> 1) {ResourceName = arr [1]; } String url = staticresourceController.class.getResource ("/"). GetPath () + "html /" + ressourceName; try {fileReader Reader = new FileReader (nouveau fichier (URL)); BufferedReader br = new BufferedReader (lecteur); StringBuilder sb = new StringBuilder (); String Line = Br.Readline (); while (line! = null) {sb.append (line); line = br.readline (); } réponse.getOutputStream (). Write (sb.ToString (). GetBytes ()); réponse.flushBuffer (); } catch (ioException e) {e.printStackTrace (); }}}Le processus d'implémentation est très simple, qui doit d'abord séparer l'uri de ressource du chemin d'accès, puis lire le fichier du répertoire statique et le sortir vers l'avant. Parce que ce n'est qu'une démonstration simple, seuls les fichiers de type texte sont traités ici et les fichiers image peuvent être traités de manière similaire. Bien sûr, nous ne le ferons certainement pas en réalité, et Spring Boot aura certainement une meilleure solution. Cependant, bien que cette méthode soit un peu stupide, c'est en effet la chose la plus essentielle. Peu importe à quel point le cadre nous aide à faire face à ce type de problème, mais à part le cadre, nous devons toujours être en mesure d'écrire un projet Web avec compétence. Ce n'est qu'en sachant que le principe de mise en œuvre que vous pouvez pouvoir gérer les problèmes lorsque vous rencontrez des problèmes. Jetons maintenant un œil à la prise en charge de Spring Boot pour les ressources statiques.
2. Méthode d'accès aux ressources statique par défaut de démarrage de Spring Boot par défaut
Spring Boot peut accéder directement aux fichiers dans quatre répertoires par défaut:
CLASSPATH: / public /
CLASSPATH: / RESSOURCES /
CLASSPATH: / statique /
CLASSPATH: / Meta-Info / Resouces /
Nous créons maintenant les quatre répertoires suivants dans le répertoire des ressources de fichiers de ressources:
Notez que les ressources de dossiers de ressources sous la barre bleue sont différentes du dossier ClassPath: / Ressources sous le chemin de classe. Les ressources sous la barre bleue représentent que les fichiers du répertoire sont des fichiers de ressources. Lors de l'emballage, tous les fichiers du répertoire seront emballés. Ce nom peut être modifié. Vous pouvez spécifier le répertoire des ressources dans pom.xml:
<Sessiers> <Resource> <Ar répertorié> SRC / Main / Resources </ Directory> </ Resource> </ Resources>
Les ressources sous le chemin de classe sont l'un des dossiers de ressources statiques par défaut de Spring Boot, et les fonctions sont les mêmes que les ressources publiques, statiques et viande / ressources. Maintenant, nous pouvons redémarrer la botte de printemps et nous pouvons passer
http: // localhost: 8080 / 1.html
http: // localhost: 8080 / 2.html
http: // localhost: 8080 / 3.html
http: // localhost: 8080 / 4.html
Quatre URL accèdent aux ressources statiques sous quatre répertoires.
3. Personnaliser le répertoire des ressources statiques
Grâce à la deuxième section, nous connaissons déjà le répertoire des ressources statiques auxquelles Spring Boot peut accéder par défaut, mais tout le monde pense certainement que ce répertoire est-il corrigé? Pouvons-nous nous définir nous-mêmes les répertoires de ressources statiques? La réponse est oui. Nous personnalisons maintenant un répertoire de ressources statique. Nous définissons un répertoire d'images pour stocker des images. Les chemins d'image / ** accéderont aux ressources dans le répertoire d'images:
@Configurationpublic class ImageMvcConfig étend webmvcconfigurerAdapter {@Override public void addResourceHandlers (ResourceHandlerRegistry Registry) {registry.addreSourceHandler ("/ image / **") .AddreSourcelocations ("classpath: / images /"); }}Ce code doit être relativement simple. @Configuration identifie une classe de configuration, qui a été mentionnée à plusieurs reprises dans l'article précédent. WebMvcConfigurerAdapter est un adaptateur pour la configuration de MVC fourni par Spring. Il a de nombreuses méthodes de configuration. AddResourceHandlers est une méthode spécialisée dans la gestion des ressources statiques. Nous parlerons d'autres méthodes plus tard. Nous vérifions maintenant si la configuration ci-dessus est valide. J'ai mis une image printemps.jpg sous le répertoire d'images. Maintenant, nous accédons à l'image via http: // localhost: 8080 / image / printemps.jpg:
En fait, en plus de la méthode ci-dessus, il existe une autre méthode plus simple, qui est de la configurer directement dans Application.yml:
Spring: MVC: Static-Path-Pattern: / Image / ** Ressources: Static-Locations: ClassPath: / Images /
STATIC-PATH-Pattern: Mode d'accès, la valeur par défaut est / **, plusieurs peuvent être séparés par virgule
Locations statiques: répertoire de ressources, séparée par les virgules par plusieurs répertoires, le répertoire de ressources par défaut est classpath: / meta-inf / ressources /, classpath: / ressources /, classpath: / static /, classpath: / public /
Notez que cette configuration écrasera le répertoire de ressources statiques par défaut de Spring Boot. Par exemple, s'il est configuré dans l'exemple, vous ne pouvez plus accéder aux ressources dans les répertoires statiques, publics, ressources, etc.
4. Résumé
Cet article partage principalement avec vous comment Spring Boot gère les ressources statiques. Spring Boot peut accéder aux ressources statiques sous les quatre répertoires: classpath: / meta-inf / ressources /, classpath: / ressources /, classpath: / static /, classpath: / public / par défaut. Nous pouvons également personnaliser la configuration en fonction de nos besoins. Enfin, il convient de noter que s'il y a des ressources avec le même nom dans ces quatre répertoires, quels répertoires les ressources en vertu du répertoire seront-elles renvoyées en premier? Vous devriez être en mesure de deviner par l'ordre par défaut des locations statiques. Par défaut, Spring Boot renverra d'abord des ressources sous / méta-infr / ressources. Bien sûr, comme nous pouvons personnaliser la valeur des locations statiques, cette priorité peut également être ajustée.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.