CodeGym /Java Kursu /Modül 3 /Ek Açıklamalarla Web Uygulamalarını Özelleştirme

Ek Açıklamalarla Web Uygulamalarını Özelleştirme

Modül 3
Seviye , Ders
Mevcut

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, @WebServlettanı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, valueve'nin urlPatternsbirbirinin 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 asyncSupportedsunucu 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.

Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION