Fourniture de ressources statiques par défaut
Springboot possède plusieurs répertoires de ressources statiques par défaut, qui peuvent également être configurés. La configuration par défaut / ** mappe vers / statique (ou / public, / ressources, / méta-inf / ressources), et la méthode de configuration personnalisée est la suivante:
printemps.mvc.static-pattern = / ** # motif de chemin utilisé pour les ressources statiques.
Si le frontal doit accéder aux ressources statiques par défaut, veuillez faire attention à la structure du répertoire suivant:
└ raises │ application.yml │ ├─Static │ ├─css │ │ index.css │ │ └fique │ index.js │ └─Templates index.html
Comment faire référence aux ressources statiques ci-dessus dans index.html?
La méthode d'écriture suivante:
<link rel = "stylesheet" type = "text / css" href = "/ css / index.css" rel = "external nofollow"> <script type = "text / javascript" src = "/ js / index.js"> </ script>
Remarque: La configuration par défaut / ** mappe à / statique (ou / public, / ressources, / méta-infr / ressources)
Lors de la demande /css/index.css, Spring MVC se trouve dans le répertoire / statique /.
Si vous êtes configuré comme /static/css/index.css, il n'y a pas de répertoire / statique sous les plusieurs répertoires configurés ci-dessus, donc le fichier de ressource ne sera pas trouvé!
Ainsi, lorsque vous écrivez des emplacements de ressources statiques, n'apportez pas les noms de répertoires mappés (tels que / statique /, / public /, / ressources /, / meta-inf / ressources /)!
Ressources statiques personnalisées
Les informations en ligne indiquent que la spécification peut être définie dans le fichier de configuration. Je n'ai pas utilisé cette méthode. Je l'ai utilisé en implémentant une configuration étendue.
PS: Explain that in the SpringBoot 1.x version, some configurations related to Spring MVC are extended by inheriting WebMvcAutoConfiguration, but in the 2.x version, the interface WebMvcConfigurer is directly implemented to extend Spring MVC related functions, such as configuring an interceptor, configuring a general return value processor, configuring unified exception handling, etc., of course, it also includes configuring the custom static resource path in Cet article, couvrant les méthodes par défaut telles que l'intérieur.
Téléchargez simplement le code:
@Configurationpublic class MyWebAppConfigurer implémente webmvcconfigurer {// event.share.image.dir = / data / share / image / @value ("$ {event.share.image.dir}") private string outputDir; @Override public void AddResourceHandlers (ResourceHandlerRegistry Registry) {registry.addreSourceHandler ("/ share / image / **"). AddResourceLocations ("File:" + OutputDir); }}Remarque: L'arrière-plan du code ci-dessus est une image prise à partir d'un autre endroit dynamiquement. Il ne doit pas être placé dans le package de pot Sringboot. Par conséquent, grâce à la configuration ci-dessus, vous pouvez accéder directement à l'image dans /data/share/image/a.jpg via http: //host/share/image/a.jpg. Si le fichier de ressources statique n'est pas dynamique, il est également dans le répertoire des ressources, il suffit de l'écrire comme ceci:
registry.addresourceHandler ("/ share / image / **"). addResourceLocations ("classpath:" + outputDir); // Modifier le fichier vers CLASSPATHAccéder aux ressources statiques via la classe d'outils Springboot
Très simple, le code est le suivant:
chaîne finale statique privée background_image = "share / background.jpg"; file file = new ClassPathResource (background_image) .getFile (); inputStream is = new ClassPathResource (background_image) .getInputStream ();
Il s'avère qu'il existe une autre façon de l'écrire:
chaîne finale statique privée background_image = "classpath: share / background.jpg"; file file = resourceutils.getFile (background_image);
Mais dans la version 2.x, ce qui suit peut apparaître mais une exception
Java.io.FilenotFoundException: Resource de chemin de classe [Share / background.jpg] ne peut pas être résolu en chemin de fichier absolu car il ne réside pas dans le système de fichiers: Jar: fichier: /home/ubuntu/wxcs/calendar-api-1.0.0.jar! / boot-inf / classes! /hare/background.jpg
Je recommanderais la première façon de l'écrire.