Fornecimento de recursos estáticos padrão
O Springboot possui vários diretórios de recursos estáticos padrão, que também podem ser configurados. A configuração padrão /** mapas para /estática (ou /public, /Resources, /meta-Inf /Resources), e o método de configuração personalizado é o seguinte:
spring.mvc.static-pathattern =/** # Padrão de caminho usado para recursos estáticos.
Se o front-end precisar acessar os recursos estáticos padrão, preste atenção à seguinte estrutura de diretório:
└─Resources │ Application.yml │ ├ -estatal │ ├─css │ │ index.css │ └ └─js │ index.js │ └─templates index.html
Como fazer referência aos recursos estáticos acima no index.html?
O seguinte método de escrita:
<link rel = "Stylesheet" type = "text/css" href = "/css/index.css" rel = "nofollow externo"> <script type = "text/javascript" src = "/js/index.js"> </sCript>
Nota: os mapas de configuração padrão /** para /static (ou /público, /recursos, /meta-inf /recursos)
Ao solicitar /css/index.css, o Spring MVC será encontrado no diretório /static /.
Se configurado como /static/css/index.css, não há diretório estático nos vários diretórios configurados acima, para que o arquivo de recursos não seja encontrado!
Portanto, ao escrever locais de recursos estáticos, não traga os nomes de diretórios mapeados (como/static/,/public/,/Resources/,/meta-Inf/Resources/)!
Recursos estáticos personalizados
As informações on -line dizem que a especificação pode ser definida no arquivo de configuração. Eu não usei esse método. Eu o usei implementando configuração estendida.
PS: Explique que, na versão Springboot 1.x, algumas configurações relacionadas ao MVC da primavera são estendidas herdando o WebMVCAutoconfiguration, mas na versão 2.x, a interface WebMVCConfigurer é implementada diretamente para estender um processador de MVC da mola, como confiar um interceptor, configurar um processador de retorno geral O caminho de recurso estático personalizado neste artigo, cobrindo os métodos padrão como dentro.
Basta enviar o código:
@ConfigurationPublic Classe mywebappconfigurer implementa webmvcconfigurer {// event.share.image.dir =/data/share/image/@value ("$ {event.share.image.dir}") private string outputdir; @Override public void addResourceHandlers (Registro de ResourceHandlerRegistry) {Registry.AddResourceHandler ("/Share/Image/**"). AddResourcelocations ("arquivo:"+outputdir); }}Nota: O plano de fundo do código acima é uma imagem tirada de outro lugar dinamicamente. Não deve ser colocado no pacote Sringboot Jar. Portanto, através da configuração acima, você pode acessar diretamente a imagem em /data/share/image/a.jpg por http: //host/share/image/a.jpg. Se o arquivo de recurso estático não for dinâmico, ele também está no diretório de recursos, só precisará escrevê -lo assim:
Registry.AddResourceHandler ("/share/image/**"). AddResourCelocations ("ClassPath:"+OutputDir); // Alterar o arquivo para ClassPathAcessando recursos estáticos através da classe de ferramentas de troca de troca
Muito simples, o código é o seguinte:
String final estática privada Antecedentes de String_image = "Compartilhar/Antecedentes.jpg"; arquivo de arquivo = new ClassPathResource (Background_Image) .getFile (); inputStream IS = new ClassPathResource (Background_Image) .getInputStream ();
Acontece que há outra maneira de escrever:
String final estática privada Antecedentes de String_image = "ClassPath: Share/Background.jpg"; arquivo file = Resourceutils.getFile (Background_Image);
Mas na versão 2.x, o seguinte pode aparecer, mas exceção
Java.io.filenotfoundException: Class Path Resource [Share/Background.jpg] não pode ser resolvido no caminho absoluto do arquivo porque não reside no sistema de arquivos: jar: file: /home/ubuntu/wxcs/calendar-api-1.0.0.jar!
Eu recomendaria a primeira maneira de escrever.