1. Gambaran keseluruhan
Semua kerangka kerja MVC menyediakan cara bekerja dengan pandangan.
Spring melakukannya melalui penyelesai pandangan, yang membolehkan anda membuat model di penyemak imbas tanpa mengikat pelaksanaannya dengan teknologi pandangan tertentu.
The ViewResolver paparan peta nama kepada pandangan yang sebenar.
Rangka kerja Spring dilengkapi dengan beberapa penyelesai pandangan seperti InternalResourceViewResolver , XmlViewResolver , ResourceBundleViewResolver dan beberapa yang lain.
Ini adalah tutorial mudah yang menunjukkan cara mengatur penyelesai pandangan yang paling biasa dan bagaimana menggunakan beberapa ViewResolver dalam konfigurasi yang sama .
2. Konfigurasi Web Spring
Mari mulakan dengan konfigurasi web; kami akan memberi komen dengan @EnableWebMvc , @Configuration dan @ComponentScan :
@EnableWebMvc @Configuration @ComponentScan("com.baeldung.web") public class WebConfig implements WebMvcConfigurer { // All web configuration will go here }
Di sinilah kita akan menetapkan penyelesai pandangan kita dalam konfigurasi.
3. Tambahkan InternalResourceViewResolver
Ini ViewResolver membolehkan kita ke hartanah set seperti awalan atau akhiran nama bertujuan untuk menjana URL halaman pandangan akhir:
@Bean public ViewResolver internalResourceViewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/view/"); bean.setSuffix(".jsp"); return bean; }
Untuk kesederhanaan contoh ini, kami tidak memerlukan pengawal untuk memproses permintaan tersebut.
Kami hanya memerlukan halaman jsp sederhana , diletakkan di folder / WEB-INF / view seperti yang ditentukan dalam konfigurasi:
4. Tambahkan ResourceBundleViewResolver
Sebagai nama penyelesai ini mencadangkan ResourceBundleViewResolver menggunakan definisi kacang dalam ResourceBundle .
Pertama, kami menambah ResourceBundleViewResolver ke konfigurasi sebelumnya:
@Bean public ViewResolver resourceBundleViewResolver() { ResourceBundleViewResolver bean = new ResourceBundleViewResolver(); bean.setBasename("views"); return bean; }
Bundel biasanya didefinisikan dalam fail sifat, yang terletak di classpath. Berikut adalah fail views.properties :
sample.(class)=org.springframework.web.servlet.view.JstlView sample.url=/WEB-INF/view/sample.jsp
Kita boleh menggunakan halaman jsp sederhana yang dinyatakan dalam contoh di atas untuk konfigurasi ini juga.
5. Tambahkan XmlViewResolver
Pelaksanaan ViewResolver ini menerima fail konfigurasi yang ditulis dalam XML dengan DTD yang sama dengan kilang kacang XML Spring :
@Bean public ViewResolver xmlViewResolver() { XmlViewResolver bean = new XmlViewResolver(); bean.setLocation(new ClassPathResource("views.xml")); return bean; }
Berikut adalah fail konfigurasi, views.xml :
Seperti contoh sebelumnya, kita boleh menggunakan halaman jsp mudah kita yang ditentukan sebelumnya.
6. Chaining ViewResolvers dan Tentukan Keutamaan Pesanan
Spring MVC juga menyokong pemecah pelbagai pandangan .
Ini membolehkan anda mengatasi pandangan tertentu dalam beberapa keadaan. Kami hanya dapat merantai pemecah pandangan dengan menambahkan lebih dari satu penyelesai ke konfigurasi.
Setelah selesai, kita perlu menentukan pesanan untuk penyelesai ini. The perintah harta digunakan untuk menentukan yang merupakan perintah doa dalam rantai. Semakin tinggi sifat pesanan (nombor pesanan terbesar), semakin lama penyelesai pandangan diposisikan dalam rantai.
Untuk menentukan urutan, kita dapat menambahkan baris kod berikut ke konfigurasi pemecah pandangan kami:
bean.setOrder(0);
Berhati-hatilah pada keutamaan pesanan kerana InternalResourceViewResolver harus mempunyai pesanan yang lebih tinggi - kerana bertujuan untuk mewakili pemetaan yang sangat jelas. Dan jika penyelesai lain mempunyai susunan yang lebih tinggi, maka InternalResourceViewResolver mungkin tidak akan dipanggil.
7. Kesimpulannya
Dalam tutorial ini kami mengkonfigurasi pemecah rantai pandangan menggunakan konfigurasi Java. Dengan bermain dengan keutamaan pesanan, kita dapat mengatur urutan permintaan mereka.
Pelaksanaan tutorial sederhana ini boleh didapati di projek github.