Servletler - Ek Açıklamalar

Şimdiye kadar, Servlet'in uygulamanızı bir web sunucusuna dağıtmak için dağıtım tanımlayıcısını (web.xml dosyası) nasıl kullandığını öğrendiniz. Servlet API 3.0, javax.servlet.annotation adlı yeni bir paket sunmuştur. Bir servlet sınıfına açıklama eklemek için kullanılabilecek açıklama türleri sağlar. Ek açıklama kullanırsanız, dağıtım tanımlayıcısı (web.xml) gerekli değildir. Ancak tomcat7 veya tomcat'in sonraki herhangi bir sürümünü kullanmalısınız.

Ek açıklamalar, sunucu uygulaması bildirimi ve sunucu uygulaması eşlemesi gibi web dağıtım tanımlayıcı dosyasındaki (web.xml) eşdeğer XML yapılandırmasının yerini alabilir. Servlet kapsayıcıları, açıklamalı sınıfları dağıtım zamanında işler.

Servlet 3.0'da tanıtılan açıklama türleri şunlardır:

Sr.No. Ek Açıklama ve Açıklama
1

@WebServlet

Bir sunucu uygulaması bildirmek için.

2

@WebInitParam

Bir başlatma parametresi belirlemek için.

3

@WebFilter

Bir sunucu uygulaması filtresi bildirmek için.

4

@WebListener

Bir WebListener bildirmek için

5

@HandlesTypes

ServletContainerInitializer'ın işleyebileceği sınıf türlerini bildirmek için.

6

@HttpConstraint

Bu açıklama, ServletSecurity açıklamasında karşılık gelen bir HttpMethodConstraint öğesinin OLMADIĞI tüm HTTP protokol yöntemlerine uygulanacak güvenlik kısıtlamalarını temsil etmek için ServletSecurity açıklamasında kullanılır.

7

@HttpMethodConstraint

Bu açıklama, belirli HTTP protokol mesajlarındaki güvenlik kısıtlamalarını temsil etmek için ServletSecurity açıklamasında kullanılır.

8

@MultipartConfig

Servlet sınıfında belirtilebilen, Servlet örneklerinin multipart / form-data MIME tipine uyan talepleri beklediğini belirten açıklama.

9

@ServletSecurity

Bu açıklama, HTTP protokol mesajlarında bir Servlet konteyneri tarafından uygulanacak güvenlik kısıtlamalarını belirtmek için bir Servlet uygulama sınıfında kullanılır.

Burada bazı Ek Açıklamaları ayrıntılı olarak tartıştık.

@Hayalhanemersin

@WebServlet, bir konteyner ile bir Servlet yapılandırmasını bildirmek için kullanılır. Aşağıdaki tablo, WebServlet açıklamaları için kullanılan özniteliklerin listesini içerir.

Sr.No. Öznitelik ve Açıklama
1

String name

Servlet Adı

2

String[] value

URL kalıpları dizisi

3

String[] urlPatterns

Bu Filtrenin uygulandığı URL modelleri dizisi

4

Int loadOnStartup

Tam sayı değeri size başlangıç ​​sıralaması ipucu verir

5

WebInitParam[] initParams

Bu Servlet için başlatma parametreleri dizisi

6

Boolean asyncSupported

Bu Servlet tarafından desteklenen zaman uyumsuz işlem

7

String smallIcon

Varsa, bu Servlet için küçük simge

8

String largeIcon

Varsa, bu Servlet için büyük simge

9

String description

Varsa, bu Servlet'in açıklaması

10

String displayName

Varsa, bu Servlet'in görünen adı

En az bir URL kalıbı, value veya urlPattern ek açıklamanın özniteliği, ancak ikisi birden değil.

value özniteliğin, ayarlanan tek öznitelik URL kalıbı olduğunda kullanılması önerilir, aksi takdirde urlPattern özellik kullanılmalıdır.

Misal

Aşağıdaki örnek @WebServlet ek açıklamasının nasıl kullanılacağını açıklar. Metni görüntüleyen basit bir servlettir.Hello Servlet.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet(value = "/Simple") 
public class Simple extends HttpServlet {

   private static final long serialVersionUID = 1L; 

   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
   
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.print("</body></html>");         
   }   
}

Derleme Simple.java her zamanki gibi ve sınıf dosyanızı <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes içine koyun.

Şimdi sadece http: // localhost: 8080 / Simple'ı çalıştırarak herhangi bir sunucu uygulamasını çağırmayı deneyin . Web sayfasında aşağıdaki çıktıyı göreceksiniz.

Hello servlet

@Evleneceksen

@WebInitParam ek açıklaması, bir Servlet veya bir Filtre için bir başlatma parametresi belirtmek için kullanılır. Bir WebFilter veya WebSevlet ek açıklamalarında kullanılır. Aşağıdaki tablo, WebInitParam ek açıklaması için kullanılan özniteliklerin listesini içerir.

Sr.No. Öznitelik ve Açıklama
1

String name

Başlatma parametresinin adı

2

String value

Başlatma parametresinin değeri

3

String description

Başlatma parametresinin açıklaması

Misal

Aşağıdaki örnek, @WebServlet ek açıklaması ile birlikte @WeInitParam ek açıklamasının nasıl kullanılacağını açıklar. Metni görüntüleyen basit bir servlettir.Hello Servlet ve dize değeri Hello World! hangisinden alınır init parametreleri.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;

@WebServlet(value = "/Simple", initParams = { 
   @WebInitParam(name = "foo", value = "Hello "), 
   @WebInitParam(name = "bar", value = " World!") 
}) 
public class Simple extends HttpServlet {

   private static final long serialVersionUID = 1L; 

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {   
      
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.println(getInitParameter("foo")); 
      out.println(getInitParameter("bar")); 
      out.print("</body></html>");         
   }   
}

Derleme Simple.java her zamanki gibi ve sınıf dosyanızı <Tomcat-installationdirectory>; / webapps / ROOT / WEB-INF / classes.

Şimdi sadece http: // localhost: 8080 / Simple'ı çalıştırarak herhangi bir sunucu uygulamasını çağırmayı deneyin . Web sayfasında aşağıdaki çıktıyı göreceksiniz.

Hello Servlet

Hello World!

@Webfilter

Bu, bir sunucu uygulaması filtresini bildirmek için kullanılan açıklamadır. Dağıtım zamanında konteyner tarafından işlenir ve ilgili filtre belirtilen URL modellerine, sunucu uygulamalarına ve dağıtım programı türlerine uygulanır.

@WebFilteraçıklama, bir web uygulamasındaki bir filtreyi tanımlar. Bu açıklama bir sınıfta belirtilir ve bildirilen filtre hakkında meta verileri içerir. Açıklamalı filtre, en az bir URL modeli belirtmelidir. Aşağıdaki tablo, WebFilter ek açıklaması için kullanılan öznitelikleri listeler.

Sr.No. Öznitelik ve Açıklama
1

String filterName

Filtrenin adı

2

String[] urlPatterns

Filtrenin uygulandığı değerler dizisi veya urlPatterns sağlar

3

DispatcherType[] dispatcherTypes

Filtrenin uygulandığı dağıtıcı türlerini (İstek / Yanıt) belirtir

4

String[] servletNames

Bir dizi sunucu uygulaması adı sağlar

5

String displayName

Filtrenin adı

6

String description

Filtrenin açıklaması

7

WebInitParam[] initParams

Bu filtre için başlatma parametreleri dizisi

8

Boolean asyncSupported

Bu filtre tarafından desteklenen zaman uyumsuz işlem

9

String smallIcon

Varsa, bu filtre için küçük simge

10

String largeIcon

Varsa, bu filtre için büyük simge

Misal

Aşağıdaki örnek, @WebFilter ek açıklamasının nasıl kullanılacağını açıklar. Init-param'ın değerini gösteren basit bir LogFiltertest-paramve konsoldaki geçerli zaman damgası. Bu, filtrenin istek ve yanıt arasında bir arayüz katmanı gibi çalıştığı anlamına gelir. Burada urlPattern için "/ *" kullanıyoruz. Bu, bu filtrenin tüm sunucu uygulamaları için geçerli olduğu anlamına gelir.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  

// Implements Filter class

@WebFilter(urlPatterns = {"/*"}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // Get init parameter  
      String testParam = config.getInitParameter("test-param");
            
      //Print the init parameter  
      System.out.println("Test Param: " + testParam);  
   } 

   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      // Log the current timestamp. 
      System.out.println("Time " + new Date().toString());  
         
      // Pass request back down the filter chain 
      chain.doFilter(request,response); 
   }

   public void destroy( ) {
      /* Called before the Filter instance is removed  
      from service by the web container*/ 
   } 
}

Derleme Simple.java her zamanki gibi ve sınıf dosyanızı <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes içine koyun.

Şimdi sadece http: // localhost: 8080 / Simple'ı çalıştırarak herhangi bir sunucu uygulamasını çağırmayı deneyin . Web sayfasında aşağıdaki çıktıyı göreceksiniz.

Hello Servlet
  
Hello World!

Şimdi, sunucu uygulaması konsolunu açın. Orada, değerini bulacaksınızinit parametre testparam ve current timestamp servlet bildirim mesajlarıyla birlikte.