Nos dois primeiros capítulos, compartilhamos o suporte da Spring Boot para RESTful, mas a interface RESTful geralmente retorna apenas dados. Ao fazer o desenvolvimento da Web, geralmente temos muitos recursos estáticos, como HTML, fotos, CSs, etc. Então, como você retorna recursos estáticos ao front -end? Os alunos que já fizeram o desenvolvimento da Web antes devem saber que haverá um diretório da WebApp no projeto da web que criamos antes e podemos acessá -lo diretamente colocando recursos estáticos nesse diretório. No entanto, os projetos baseados em inicialização da primavera não têm esse diretório, então como devemos lidar com isso?
1. Da maneira mais estúpida
Vamos primeiro compartilhar a maneira mais estúpida, que é devolver os recursos estáticos diretamente ao front-end através do fluxo. Criamos um diretório HTML no diretório raiz dos recursos do projeto MAVEN e, em seguida, colocamos o arquivo html nesse diretório e especificamos que qualquer caminho de acesso inicia com / estático / deve acessar os recursos estáticos no diretório. A implementação é a seguinte:
@ControllerPublic Classe staticResourCecontroller {@RequestMapping ("/static/**") public void Gethtml (httpServletRequest solicitação, httpServletResponse resposta) {string uri = request.getrequesturi (); String [] arr = uri.split ("static/"); String ResourceName = "Index.html"; if (arr.Length> 1) {ResourceName = arr [1]; } String url = staticResourceController.class.getResource ("/"). GetPath () + "html/" + ResourceName; tente {FileReader Reader = new FileReader (novo arquivo (URL)); BufferErader BR = new BufferredReader (leitor); Stringbuilder sb = new stringbuilder (); Linha de string = br.readline (); while (linha! = null) {sb.append (linha); linha = BR.readline (); } resposta.getOutputStream (). write (sb.toString (). getBytes ()); Response.flushBuffer (); } catch (ioexception e) {e.printStackTrace (); }}}O processo de implementação é muito simples, que é primeiro separar o URI do recurso do caminho, ler o arquivo do diretório estático e emitê -lo para o front end. Por ser apenas uma demonstração simples, apenas os arquivos do tipo texto são processados aqui e os arquivos de imagem podem ser processados da mesma forma. Obviamente, definitivamente não faremos isso na realidade, e a Spring Boot definitivamente terá uma solução melhor. No entanto, embora esse método seja um pouco estúpido, é realmente a coisa mais essencial. Não importa o quão conveniente a estrutura nos ajude a lidar com esse tipo de problema, mas, além da estrutura, ainda precisamos ser capazes de escrever um projeto da web com deficiência. Somente sabendo o princípio da implementação, você pode poder lidar com problemas quando encontrar problemas. Agora, vamos dar uma olhada no suporte da Spring Boot para recursos estáticos.
2. Método de acesso a recursos estáticos padrão da bota de mola
O Spring Boot pode acessar diretamente arquivos em quatro diretórios por padrão:
ClassPath:/Public/
ClassPath:/Recursos/
ClassPath:/Static/
ClassPath:/meta-info/resouces/
Agora criamos os quatro diretórios a seguir no diretório de recursos de arquivos de recursos:
Observe que os recursos da pasta de recursos sob a barra azul são diferentes da pasta ClassPath:/Recursos sob o caminho de classe. Os recursos sob a barra azul representam que os arquivos no diretório são arquivos de recursos. Ao embalar, todos os arquivos no diretório serão embalados. Este nome pode ser alterado. Você pode especificar o diretório de recursos em pom.xml:
<Resources> <Source> <Directory> src/main/recursos </diretório> </resource> </recursos>
Os recursos sob o caminho de classe são uma das pastas de recursos estáticas padrão da bota de primavera, e as funções são as mesmas que públicas, estáticas e de carne/recursos/recursos. Agora podemos reiniciar a inicialização da primavera e podemos passar
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
Quatro URLs acessam recursos estáticos sob quatro diretórios.
3. Personalize o diretório de recursos estáticos
Através da segunda seção, já conhecemos o diretório de recursos estáticos que a Spring Boot pode acessar por padrão, mas todos definitivamente pensarão, esse diretório é corrigido? Podemos definir diretórios de recursos estáticos? A resposta é sim. Agora personalizamos um diretório de recursos estáticos. Definimos um diretório de imagens para armazenar imagens. Todos os caminhos /** ** acessarão os recursos no diretório de imagens:
@ConfigurationPublic Class ImagemvcConfig estende WebMVCConfigureRAdApter {@Override public void addResourceHandlers (RecursoHandlerRegistry Registry) {Registry.addResourceHandler ("/image/**") .AddrElocations ("ClassPath:/Images/"); }}Este código deve ser relativamente simples. O @Configuration identifica uma classe de configuração, que foi mencionada muitas vezes no artigo anterior. WebMVCConfigureRAdapter é um adaptador para configurar o MVC fornecido pela primavera. Possui muitos métodos de configuração. AddResourceHandlers é um método especializado em lidar com recursos estáticos. Falaremos sobre outros métodos mais tarde. Agora estamos verificando se a configuração acima é válida. Coloquei uma imagem Spring.jpg no diretório de imagens. Agora, acessamos a imagem por meio de http: // localhost: 8080/imagem/spring.jpg:
De fato, além do método acima, existe outro método mais simples, que é configurá -lo diretamente no Application.yml:
Primavera: MVC: Patadrão estático:/Image/** Recursos: Locações estáticas: ClassPath:/Images/
Padrão de path estático: modo de acesso, padrão é /**, múltiplo pode ser separado por vírgula
Locações estáticas: Diretório de recursos, separado por vírgula por vários diretórios, o diretório de recursos padrão é ClassPath:/meta-Inf/Resources/, ClassPath:/Resources/, Classpath:/static/, Classpath:/public/
Observe que esta configuração substituirá o diretório de recursos estáticos padrão da Spring Boot. Por exemplo, se configurado no exemplo, você não poderá mais acessar recursos estáticos em diretórios estáticos, públicos, de recursos etc.
4. Resumo
Este artigo compartilha principalmente com você como a Spring Boot lida com recursos estáticos. O Spring Boot pode acessar recursos estáticos nos quatro diretórios: ClassPath:/meta-inf/Resources/, ClassPath:/Resources/, ClassPath:/static/, Classpath:/public/por padrão. Também podemos personalizar a configuração de acordo com nossas necessidades. Finalmente, deve -se notar que, se houver recursos com o mesmo nome nesses quatro diretórios, qual diretório os recursos serão devolvidos primeiro? Você deve adivinhar a ordem padrão das locações estáticas. Por padrão, a Spring Boot retornará os recursos em /meta-Inf /Recursos primeiro. Obviamente, como podemos personalizar o valor das locações estáticas, essa prioridade também pode ser ajustada.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.