8.1 Sunucu uygulaması ek açıklamalarına giriş
Sürüm 7'den itibaren Tomcat, Servlet API 3.0 web sunucu uygulaması spesifikasyonunu desteklemeye başladı . Özellikle, içinde javax.servlet.annotation
. Bir servlet sınıfına açıklama eklemek için kullanılabilecek çeşitli açıklama türleri içerir. Ek açıklama kullanıyorsanız dağıtım tanımlayıcısı (web.xml) gerekli değildir.
En kullanışlı açıklamaların listesi:
dipnot | Tanım | |
---|---|---|
1 | @WebServlet |
Bir servlet bildirir |
2 | @WebInitParam |
Bir başlatma parametresi belirtir |
3 | @WebFilter |
Bir web filtresi bildirir |
4 | @WebListener |
Web lisenerini ilan eder |
5 | @ServletSecurity |
Güvenlik ayarlarını yapılandırmanıza izin verir |
Örnek:
@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!");
}
}
Bir sunucu uygulamasını bildirmek ve onu /api/*
.
8.2 Sunucu uygulaması eşlemesini ayarlama
Ek açıklama, @WebServlet
tanımladığı sunucu uygulamasının çok esnek bir şekilde yapılandırılmasına izin veren birçok parametreye sahiptir. Ana olanlara bir göz atalım:
Bağlanmak | Tanım | |
---|---|---|
1 | name |
Servlet benzersiz adı (web.xml'deki gibi) |
2 | displayName |
İnsan tarafından okunabilen servlet adı |
3 | description |
Servlet Açıklaması |
4 | value |
Eşleme için URL'yi ayarlar |
5 | urlPatterns |
Eşlenecek URL'lerin bir listesini belirtir (değer yerine kullanılır) |
6 | initParams |
Sunucu uygulamasının başlangıç parametrelerini ayarlamanıza izin verir |
7 | asyncSupported |
Sunucu uygulamasının zaman uyumsuz olarak çalışabileceğini belirtir (HTTP/2) |
8 | loadOnStartup |
Servlet başlatma önceliğini kontrol etmek için sıra numarası |
9 | smallIcon |
Küçük bir servlet simgesi ayarlar |
10 | largeIcon |
Büyük bir servlet simgesi ayarlar |
Burada birkaç ilginç nokta var.
İlk olarak, value
ve'nin urlPatterns
birbirinin yerine geçebilen nitelikler olduğuna dikkat edin. Her ikisi de sunucu uygulamasının eşleşmesi gereken bir URL listesi belirtmenize izin verir.
İkincisi, parametre asyncSupported
sunucu uygulamasının HTTP/2 protokolü üzerinden eşzamansız istekleri doğru bir şekilde işleyip işlemeyeceğini gösterir.
Ve üçüncü önemli özellik initParams
, ServletContext'e yerleştirilecek parametrelerin bir listesini ayarlamanıza izin verir.
Örnek:
@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 Filtre eşlemeyi ayarlama
Yukarıda bahsedildiği gibi, filtreler bir yardımcı sunucu uygulaması türüdür ve sunucu uygulamaları gibi yapılandırılırlar. Bir ek açıklamanın sahip olduğu özellikler şunlardır @WebFilter
:
Bağlanmak | Tanım | |
---|---|---|
1 | filterName |
Benzersiz adı filtreleyin (web.xml'deki gibi) |
2 | displayName |
Okunabilir filtre adı |
3 | description |
Filtre Açıklama |
4 | value / urlPatterns |
Eşlenecek URL'lerin bir listesini ayarlar |
5 | dispatcherTypes |
DispatcherTypes listesini belirtir |
6 | servletNames |
Uygulanacak sunucu uygulamalarının bir listesini belirtir |
7 | initParams |
Filtrenin başlangıç parametrelerini ayarlamanızı sağlar |
8 | asyncSupported |
Filtrenin eşzamansız çalışabileceğini belirtir (HTTP/2) |
9 | smallIcon |
Küçük bir filtre simgesi ayarlar |
10 | largeIcon |
Büyük bir filtre simgesi ayarlar |
Belirli sunucu uygulamacıklarına yönelik tüm istekleri engelleyen bir filtre örneği :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Birden fazla parametre verilen bir filtre örneği :
@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...
}
RequestDispatcher için tür verilen bir filtre örneği :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
Sonraki derslerde filtrelerin ve servletlerin amacı hakkında daha fazla bilgi edineceksiniz.
GO TO FULL VERSION