8.1 Pengantar anotasi servlet
Dimulai dengan versi 7, Tomcat mulai mendukung spesifikasi web servlet Servlet API 3.0 . Secara khusus, sebuah paket muncul di dalamnya bernama javax.servlet.annotation
. Ini berisi berbagai jenis anotasi yang dapat digunakan untuk membuat anotasi kelas servlet. Jika Anda menggunakan anotasi, deskriptor penyebaran (web.xml) tidak diperlukan.
Daftar anotasi yang paling berguna:
anotasi | Keterangan | |
---|---|---|
1 | @WebServlet |
Mendeklarasikan servlet |
2 | @WebInitParam |
Menentukan parameter inisialisasi |
3 | @WebFilter |
Mendeklarasikan filter web |
4 | @WebListener |
Mendeklarasikan lisener web |
5 | @ServletSecurity |
Memungkinkan Anda mengonfigurasi pengaturan keamanan |
Contoh:
@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}
Satu anotasi cukup untuk mendeklarasikan servlet dan memetakannya untuk melayani semua permintaan yang akan datang ke URL yang diberikan oleh /api/*
.
8.2 Menyiapkan pemetaan servlet
Anotasi memiliki @WebServlet
banyak parameter yang memungkinkan konfigurasi servlet yang sangat fleksibel yang dijelaskannya. Mari kita lihat yang utama:
Atribut | Keterangan | |
---|---|---|
1 | name |
Nama unik servlet (seperti di web.xml) |
2 | displayName |
Nama servlet yang dapat dibaca manusia |
3 | description |
Deskripsi Servlet |
4 | value |
Menetapkan url untuk pemetaan |
5 | urlPatterns |
Menentukan daftar url untuk dipetakan (digunakan sebagai pengganti nilai) |
6 | initParams |
Memungkinkan Anda menyetel parameter awal servlet |
7 | asyncSupported |
Menentukan bahwa servlet dapat berjalan secara asinkron (HTTP/2) |
8 | loadOnStartup |
Nomor urut untuk mengontrol prioritas mulai servlet |
9 | smallIcon |
Menyetel ikon servlet kecil |
10 | largeIcon |
Menyetel ikon servlet besar |
Ada beberapa poin menarik di sini.
Pertama, perhatikan bahwa value
dan urlPatterns
adalah atribut yang dapat dipertukarkan. Keduanya memungkinkan Anda untuk menentukan daftar URL yang harus dipetakan oleh servlet.
Kedua, parameter asyncSupported
menunjukkan apakah servlet akan memproses permintaan asinkron dengan benar melalui protokol HTTP/2.
Dan atribut penting ketiga adalah initParams
, memungkinkan Anda untuk mengatur daftar parameter yang akan ditempatkan di ServletContext.
Contoh:
@WebServlet(
urlPatterns = {"/sendFile", "/uploadFile"},
loadOnStartup = 1,
asyncSupported = true,
initParams = {
@WebInitParam(name = "saveDir", value = "c:/uploaded"),
@WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
}
)
public class ImageUploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String saveDir = getInitParameter("saveDir");
String fileTypes = getInitParameter("allowedTypes");
PrintWriter writer = response.getWriter();
writer.println("saveDir = " + saveDir);
writer.println("fileTypes = " + fileTypes);
}
}
8.3 Menyiapkan pemetaan filter
Seperti disebutkan di atas, filter adalah jenis servlet utilitas, dan dikonfigurasi seperti servlet. Berikut adalah atribut yang dimiliki anotasi @WebFilter
:
Atribut | Keterangan | |
---|---|---|
1 | filterName |
Filter nama unik (seperti di web.xml) |
2 | displayName |
Nama filter yang dapat dibaca manusia |
3 | description |
Deskripsi Filter |
4 | value / urlPatterns |
Menetapkan daftar url untuk dipetakan |
5 | dispatcherTypes |
Menentukan daftar DispatcherTypes |
6 | servletNames |
Menentukan daftar servlet yang akan diterapkan |
7 | initParams |
Memungkinkan Anda menyetel parameter awal filter |
8 | asyncSupported |
Menentukan bahwa filter dapat berjalan secara asinkron (HTTP/2) |
9 | smallIcon |
Menetapkan ikon filter kecil |
10 | largeIcon |
Menetapkan ikon filter besar |
Contoh filter yang mencegat semua permintaan ke servlet tertentu :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Contoh filter yang diberikan beberapa parameter :
@WebFilter(
urlPatterns = "/uploadFilter",
initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
// implements Filter's methods here...
}
Contoh jenis filter yang diberikan untuk RequestDispatcher :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Anda akan mempelajari lebih lanjut tentang tujuan filter dan servlet dalam kuliah berikut.