<url-pattern>/*</url-pattern>
Pada /*
servlet menimpa semua servlet lain, termasuk semua servlet yang disediakan oleh servletcontainer seperti servlet default dan servlet JSP. Apapun permintaan Anda, itu akan berakhir di servlet itu. Dengan demikian, ini adalah pola URL yang buruk untuk servlets. Biasanya, Anda ingin menggunakan /*
pada Filter
saja. Ia dapat membiarkan permintaan melanjutkan ke servlet mana pun yang mendengarkan pada pola URL yang lebih spesifik dengan menelepon FilterChain#doFilter()
.
<url-pattern>/</url-pattern>
Tidak /
mengesampingkan servlet lainnya. Itu hanya menggantikan servlet builtin default servlet untuk semua permintaan yang tidak cocok dengan servlet terdaftar lainnya. Ini biasanya hanya dipanggil pada sumber daya statis (CSS / JS / image / dll) dan daftar direktori. Server servlet bawaan bawaan ini juga mampu menangani permintaan cache HTTP, streaming media (audio / video) dan resume unduhan file. Biasanya, Anda tidak ingin mengganti servlet default karena Anda harus mengurus semua tugasnya, yang tidak sepele (pustaka utilitas JSF OmniFaces memiliki contoh sumber terbuka ). Ini juga merupakan pola URL yang buruk untuk servlets. Mengenai mengapa halaman JSP tidak mengenai servlet ini, itu karena servletcontainer yang dibangun di dalam JSP servlet akan dipanggil, yang secara default sudah dipetakan pada pola URL yang lebih spesifik *.jsp
.
<url-pattern></url-pattern>
Lalu ada juga pola URL string kosong
. Ini akan dipanggil ketika root konteks diminta. Ini berbeda dari <welcome-file>
pendekatan yang tidak dipanggil ketika ada subfolder yang diminta. Ini kemungkinan besar pola URL yang sebenarnya Anda cari seandainya Anda menginginkan " halaman beranda servlet ". Saya hanya harus mengakui bahwa saya secara intuitif mengharapkan pola URL string kosong
dan pola slash URL /
didefinisikan secara persis sebaliknya, jadi saya dapat memahami bahwa banyak pemula yang bingung mengenai hal ini. Tapi memang begitu.
Pengontrol Depan
Dalam kasus Anda benar-benar berniat untuk memiliki front controller servlet, maka Anda akan lebih terbaik peta itu pada pola URL yang lebih spesifik seperti *.html
, *.do
, /pages/*
, /app/*
, dll Anda dapat menyembunyikan diri pola URL front controller dan penutup sumber daya statis pada pola URL umum seperti /resources/*
,, /static/*
dll dengan bantuan filter servlet. Lihat juga Cara mencegah sumber daya statis ditangani oleh servlet pengontrol depan yang dipetakan pada / * . Perlu dicatat bahwa Spring MVC memiliki servlet sumber daya statis bawaan, jadi itu sebabnya Anda bisa memetakan pengontrol depannya /
jika Anda mengonfigurasi pola URL umum untuk sumber daya statis di Spring. Lihat juga Bagaimana menangani konten statis di Spring MVC?