Servlets - Chú thích

Cho đến nay, bạn đã biết cách Servlet sử dụng bộ mô tả triển khai (tệp web.xml) để triển khai ứng dụng của bạn vào một máy chủ web. Servlet API 3.0 đã giới thiệu một gói mới có tên javax.servlet.annotation. Nó cung cấp các kiểu chú thích có thể được sử dụng để chú thích một lớp servlet. Nếu bạn sử dụng chú thích, thì bộ mô tả triển khai (web.xml) là không bắt buộc. Nhưng bạn nên sử dụng tomcat7 hoặc bất kỳ phiên bản nào mới hơn của tomcat.

Chú thích có thể thay thế cấu hình XML tương đương trong tệp trình mô tả triển khai web (web.xml) chẳng hạn như khai báo servlet và ánh xạ servlet. Vùng chứa Servlet sẽ xử lý các lớp được chú thích tại thời điểm triển khai.

Các kiểu chú thích được giới thiệu trong Servlet 3.0 là:

Sr.No. Chú thích & Mô tả
1

@WebServlet

Để khai báo một servlet.

2

@WebInitParam

Để chỉ định một tham số khởi tạo.

3

@WebFilter

Để khai báo một bộ lọc servlet.

4

@WebListener

Để khai báo một WebListener

5

@HandlesTypes

Để khai báo các loại lớp mà ServletContainerInitializer có thể xử lý.

6

@HttpConstraint

Chú thích này được sử dụng trong chú thích ServletSecurity để biểu thị các ràng buộc bảo mật được áp dụng cho tất cả các phương thức giao thức HTTP mà phần tử HttpMethodConstraint tương ứng KHÔNG xuất hiện trong chú thích ServletSecurity.

7

@HttpMethodConstraint

Chú thích này được sử dụng trong chú thích ServletSecurity để thể hiện các ràng buộc bảo mật trên các thông báo giao thức HTTP cụ thể.

số 8

@MultipartConfig

Chú thích có thể được chỉ định trên một lớp Servlet, chỉ ra rằng các trường hợp của Servlet mong đợi các yêu cầu tuân theo kiểu MIME đa phần / biểu mẫu-dữ liệu.

9

@ServletSecurity

Chú thích này được sử dụng trên một lớp triển khai Servlet để chỉ định các ràng buộc bảo mật được thực thi bởi một vùng chứa Servlet trên các bản tin giao thức HTTP.

Ở đây chúng tôi đã thảo luận chi tiết về một số Chú thích.

@WebServlet

@WebServlet được sử dụng để khai báo cấu hình của Servlet với vùng chứa. Bảng sau đây chứa danh sách các thuộc tính được sử dụng cho chú thích WebServlet.

Sr.No. Thuộc tính & Mô tả
1

String name

Tên của Servlet

2

String[] value

Mảng mẫu URL

3

String[] urlPatterns

Mảng mẫu URL mà Bộ lọc này áp dụng

4

Int loadOnStartup

Giá trị số nguyên cung cấp cho bạn gợi ý sắp xếp khởi động

5

WebInitParam[] initParams

Mảng các tham số khởi tạo cho Servlet này

6

Boolean asyncSupported

Hoạt động không đồng bộ được hỗ trợ bởi Servlet này

7

String smallIcon

Biểu tượng nhỏ cho Servlet này, nếu có

số 8

String largeIcon

Biểu tượng lớn cho Servlet này, nếu có

9

String description

Mô tả của Servlet này, nếu có

10

String displayName

Tên hiển thị của Servlet này, nếu có

Ít nhất một mẫu URL PHẢI được khai báo trong value hoặc là urlPattern thuộc tính của chú thích, nhưng không phải cả hai.

Các value thuộc tính được khuyến nghị sử dụng khi mẫu URL là thuộc tính duy nhất được đặt, nếu không urlPattern thuộc tính nên được sử dụng.

Thí dụ

Ví dụ sau mô tả cách sử dụng chú thích @WebServlet. Nó là một servlet đơn giản hiển thị văn bảnHello 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>");         
   }   
}

Biên dịch Simple.java theo cách thông thường và đặt tệp lớp của bạn vào các lớp <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /.

Bây giờ hãy thử gọi bất kỳ servlet nào bằng cách chỉ chạy http: // localhost: 8080 / Simple . Bạn sẽ thấy kết quả sau trên trang web.

Hello servlet

@WebInitParam

Chú thích @WebInitParam được sử dụng để chỉ định tham số khởi tạo cho Servlet hoặc Bộ lọc. Nó được sử dụng trong các chú thích WebFilter hoặc WebSevlet. Bảng sau đây chứa danh sách các thuộc tính được sử dụng cho chú thích WebInitParam.

Sr.No. Thuộc tính & Mô tả
1

String name

Tên của tham số khởi tạo

2

String value

Giá trị của tham số khởi tạo

3

String description

Mô tả tham số khởi tạo

Thí dụ

Ví dụ sau mô tả cách sử dụng chú thích @WeInitParam cùng với chú thích @WebServlet. Nó là một servlet đơn giản hiển thị văn bảnHello Servlet và giá trị chuỗi Hello World! được lấy từ init thông số.

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>");         
   }   
}

Biên dịch Simple.java theo cách thông thường và đặt tệp lớp của bạn vào các lớp <Tomcat-installationdirectory>; / webapps / ROOT / WEB-INF /.

Bây giờ hãy thử gọi bất kỳ servlet nào bằng cách chỉ chạy http: // localhost: 8080 / Simple . Bạn sẽ thấy kết quả sau trên trang web.

Hello Servlet

Hello World!

@Webfilter

Đây là chú thích được sử dụng để khai báo một bộ lọc servlet. Nó được xử lý bởi vùng chứa tại thời điểm triển khai và bộ lọc tương ứng được áp dụng cho các mẫu URL, các servlet và các loại điều phối được chỉ định.

Các @WebFilterchú thích xác định một bộ lọc trong ứng dụng web. Chú thích này được chỉ định trên một lớp và chứa siêu dữ liệu về bộ lọc đang được khai báo. Bộ lọc chú thích phải chỉ định ít nhất một mẫu URL. Bảng sau liệt kê các thuộc tính được sử dụng cho chú thích WebFilter.

Sr.No. Thuộc tính & Mô tả
1

String filterName

Tên của bộ lọc

2

String[] urlPatterns

Cung cấp mảng giá trị hoặc urlPatterns mà bộ lọc áp dụng

3

DispatcherType[] dispatcherTypes

Chỉ định các loại điều phối viên (Yêu cầu / Phản hồi) mà bộ lọc áp dụng

4

String[] servletNames

Cung cấp một loạt các tên servlet

5

String displayName

Tên của bộ lọc

6

String description

Mô tả bộ lọc

7

WebInitParam[] initParams

Mảng các tham số khởi tạo cho bộ lọc này

số 8

Boolean asyncSupported

Hoạt động không đồng bộ được hỗ trợ bởi bộ lọc này

9

String smallIcon

Biểu tượng nhỏ cho bộ lọc này, nếu có

10

String largeIcon

Biểu tượng lớn cho bộ lọc này, nếu có

Thí dụ

Ví dụ sau mô tả cách sử dụng chú thích @WebFilter. Nó là một LogFilter đơn giản hiển thị giá trị của Init-paramtest-paramvà dấu thời gian hiện tại trên bảng điều khiển. Điều đó có nghĩa là bộ lọc hoạt động giống như một lớp giao diện giữa yêu cầu và phản hồi. Ở đây chúng tôi sử dụng "/ *" cho urlPattern. Nó có nghĩa là, bộ lọc này có thể áp dụng cho tất cả các servlet.

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*/ 
   } 
}

Biên dịch Simple.java theo cách thông thường và đặt tệp lớp của bạn vào các lớp <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /.

Bây giờ hãy thử gọi bất kỳ servlet nào bằng cách chỉ chạy http: // localhost: 8080 / Simple . Bạn sẽ thấy kết quả sau trên trang web.

Hello Servlet
  
Hello World!

Bây giờ, hãy mở bảng điều khiển servlet. Ở đó, bạn sẽ tìm thấy giá trị củainit tham số testparamcurrent timestamp cùng với các tin nhắn thông báo servlet.