Dalam dua bab pertama, kami membagikan dukungan Spring Boot untuk Restful, tetapi antarmuka yang tenang biasanya hanya mengembalikan data. Saat melakukan pengembangan web, kita sering memiliki banyak sumber daya statis, seperti HTML, gambar, CSS, dll. Jadi, bagaimana Anda mengembalikan sumber daya statis ke ujung depan? Siswa yang telah melakukan pengembangan web sebelumnya harus tahu bahwa akan ada direktori webapp di bawah proyek web yang kami buat sebelumnya, dan kami dapat secara langsung mengaksesnya dengan menempatkan sumber daya statis di direktori ini. Namun, proyek berbasis Spring Boot tidak memiliki direktori ini, jadi bagaimana kita harus menghadapinya?
1. Cara paling bodoh
Pertama-tama mari kita bagikan dengan cara yang paling bodoh, yaitu mengembalikan sumber daya statis langsung ke front-end melalui aliran. Kami membuat direktori HTML di direktori root sumber daya proyek Maven, dan kemudian kami menempatkan file HTML di direktori ini, dan menentukan bahwa setiap jalur akses dimulai dengan / statis / adalah untuk mengakses sumber daya statis di direktori. Implementasinya adalah sebagai berikut:
@ControllerPublic kelas StaticResourCeController {@RequestMapping ("/static/**") public void getHTML (permintaan httpservletRequest, respons httpservletResponse) {string uri = request.getRequestur (); String [] arr = uri.split ("statis/"); String ResourceName = "index.html"; if (arr.length> 1) {resourcename = arr [1]; } String url = staticResourCeController.class.getResource ("/"). GetPath () + "html/" + resourcename; coba {filereader pembaca = filereader baru (file baru (url)); BufferedReader BR = BufferedReader baru (pembaca); StringBuilder SB = StringBuilder baru (); String line = br.readline (); while (line! = null) {sb.append (line); line = br.readline (); } response.getoutputStream (). write (sb.toString (). getBytes ()); response.flushbuffer (); } catch (ioException e) {e.printstacktrace (); }}}Proses implementasi sangat sederhana, yang pertama -tama memisahkan sumber daya URI dari jalur, kemudian membaca file dari direktori statis, dan mengeluarkannya ke ujung depan. Karena ini hanya demonstrasi sederhana, hanya file tipe teks yang diproses di sini, dan file gambar dapat diproses dengan cara yang sama. Tentu saja, kami pasti tidak akan melakukan ini dalam kenyataan, dan Spring Boot pasti akan memiliki solusi yang lebih baik. Namun, meskipun metode ini agak bodoh, itu memang hal yang paling penting. Tidak peduli seberapa nyaman kerangka kerja ini membantu kita menangani masalah semacam ini, tetapi selain dari kerangka kerja, kita masih harus dapat menulis proyek web dengan mahir. Hanya dengan mengetahui prinsip implementasi Anda dapat dapat menangani masalah saat Anda mengalami masalah. Sekarang mari kita lihat dukungan Spring Boot untuk sumber daya statis.
2. Metode akses sumber daya statis boot spring boot
Spring Boot dapat secara langsung mengakses file di empat direktori secara default:
ClassPath:/Publik/
classpath:/sumber daya/
classpath:/statis/
classpath:/meta-info/resouces/
Kami sekarang membuat empat direktori berikut di direktori sumber daya file sumber daya:
Perhatikan bahwa sumber daya folder sumber daya di bawah bilah biru berbeda dari folder classpath:/sumber daya di bawah classpath. Sumber daya di bawah Blue Bar mewakili bahwa file dalam direktori adalah file sumber daya. Saat mengemas, semua file di direktori akan dikemas. Nama ini bisa diubah. Anda dapat menentukan direktori sumber daya di pom.xml:
<seraman sumber daya> <serewerce> <recrectory> src/main/sumber daya </direktori> </resource> </sumber daya>
Sumber daya di bawah Classpath adalah salah satu folder sumber daya statis statis default, dan fungsinya sama dengan publik, statis dan info/sumber daya. Sekarang kita dapat memulai kembali boot musim semi dan kita bisa lewat
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
Empat URL mengakses sumber daya statis di bawah empat direktori.
3. Kustomisasi Direktori Sumber Daya Statis
Melalui bagian kedua, kita sudah tahu direktori sumber daya statis yang dapat diakses Spring Boot secara default, tetapi semua orang pasti akan berpikir, apakah direktori ini diperbaiki? Bisakah kita mendefinisikan direktori sumber daya statis sendiri? Jawabannya adalah ya. Kami sekarang menyesuaikan direktori sumber daya statis. Kami mendefinisikan direktori gambar untuk menyimpan gambar. Semua /gambar /** jalur akan mengakses sumber daya di direktori gambar:
@ConfigurationPublic kelas ImagemVcconfig memperluas WebMvCconfigurerAdapter {@Override public void addResourceHandlers (ResourceHandlerRegistry Registry) {Registry.addResourceHandler ("/Image/**") .addresourcelocations ("classpath:/gambar/"); }}Kode ini harus relatif sederhana. @Configuration mengidentifikasi kelas konfigurasi, yang telah disebutkan berkali -kali dalam artikel sebelumnya. WebMvCconfigurerAdapter adalah adaptor untuk mengkonfigurasi MVC yang disediakan oleh Spring. Ini memiliki banyak metode konfigurasi. AddResourceHandlers adalah metode yang berspesialisasi dalam menangani sumber daya statis. Kami akan berbicara tentang metode lain nanti. Sekarang kami memverifikasi apakah konfigurasi di atas valid. Saya meletakkan gambar spring.jpg di bawah direktori gambar. Sekarang kita mengakses gambar melalui http: // localhost: 8080/image/spring.jpg:
Bahkan, selain metode di atas, ada metode lain yang lebih sederhana, yaitu untuk mengonfigurasinya secara langsung di application.yml:
Spring: MVC: Static-Path-Pattern:/Image/** Sumber: Lokasi Statis: ClassPath:/Images/
Pola Statis-Path: Mode Akses, Default IS /**, Multiple dapat dipisahkan dengan koma
Lokasi statis: direktori sumber daya, dipisahkan koma oleh beberapa direktori, direktori sumber daya default adalah classpath:/meta-inf/sumber daya/, classpath:/sumber daya/, classpath:/static/, classpath:/public/
Perhatikan bahwa konfigurasi ini akan menimpa direktori sumber daya statis default dari Spring Boot. Misalnya, jika dikonfigurasi dalam contoh, Anda tidak dapat lagi mengakses sumber daya dalam direktori statis, publik, sumber daya, dll.
4. Ringkasan
Artikel ini terutama berbagi dengan Anda bagaimana Spring Boot menangani sumber daya statis. Spring Boot dapat mengakses sumber daya statis di bawah empat direktori: classpath:/meta-inf/sumber daya/, classpath:/sumber daya/, classpath:/static/, classpath:/public/secara default. Kami juga dapat mempersonalisasikan konfigurasi sesuai dengan kebutuhan kami. Akhirnya, perlu dicatat bahwa jika ada sumber daya dengan nama yang sama di empat direktori ini, direktori mana sumber daya di bawah direktori mana yang akan dikembalikan terlebih dahulu? Anda harus dapat menebak urutan default lokasi statis. Secara default, Spring Boot akan mengembalikan sumber daya di bawah /meta-inf /sumber daya terlebih dahulu. Tentu saja, karena kami dapat menyesuaikan nilai lokasi statis, prioritas ini juga dapat disesuaikan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.