English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 애노테이션

현재까지 Servlet이 웹 서버에 응용 프로그램을 배포하는 데 사용되는 배포 설명자(web.xml 파일)에 대해 알게 되었습니다.  Servlet API 3.0에서 javax.servlet.annotation라는 새로운 패키지가 도입되었습니다. Servlet 클래스에 애노테이션을 적용할 수 있는 애노테이션 타입을 제공합니다. 애노테이션을 사용하면 배포 설명자(web.xml)가 필요하지 않습니다. 그러나 tomcat을 사용해야 합니다7또는 더 높은 버전의 tomcat.

애노테이션은 web.xml 파일에 있는等效 XML 설정을 대체할 수 있습니다. 예를 들어, 서블릿 선언과 서블릿 매핑. 서블릿 컨테이너는 배포 시 애노테이션을 포함한 클래스를 처리합니다.

Servlet 3.0에서 도입된 애노테이션 타입은

Sr.No.애노테이션과 설명
1

@WebServlet

서블릿을 선언합니다.

2

@WebInitParam

구�始化 매개변수를 지정합니다.

3

@WebFilter

서블릿 필터를 선언합니다.

4

@WebListener

WebListener를 선언합니다.

5

@HandlesTypes

ServletContainerInitializer가 처리할 수 있는 클래스 타입을 선언합니다.

6

@HttpConstraint

이 설명은 ServletSecurity 애노테이션에서 모든 HTTP 프로토콜 메서드에 적용되는 보안 제약 조건을 나타내며, 이러한 메서드에 대해 ServletSecurity 애노테이션에 해당하는 HttpMethodConstraint 요소가 없습니다.

7

@HttpMethodConstraint

此注解在 ServletSecurity 注解中用于表示特定 HTTP 协议消息的安全约束。

8

@MultipartConfig

可以在 Servlet 类上指定的注解,表示 Servlet 的实例期望符合多部分/表单数据 MIME 类型的请求。

9

@ServletSecurity

此注解用于 Servlet 实现类,以指定 Servlet 容器对 HTTP 协议消息实施的安全约束。

这里我们已经详细讨论了一些注解。

@WebServlet

@WebServlet 用于声明带有容器的 Servlet 的配置。下表包含用于 WebServlet 注解的属性列表。

Sr.No.속성과 설명
1

String name

Servlet 的名称

2

String[] value

URL 模式数组

3

String[] urlPatterns

应用此筛选器的 URL 模式数组

4

Int loadOnStartup

整数值给出启动排序提示

5

WebInitParam[] initParams

Servlet 初始化数组参数

6

Boolean asyncSupported

Servlet 支持的异步操作

7

String smallIcon

Servlet 的小图标,如果有的话

8

String largeIcon

Servlet 的大图标,如果有的话

9

String description

Servlet 的描述,如果存在的话

10

String displayName

显示此 Servlet 的名称(如果存在)

必须在注解的 value 或 urlPattern 属性中声明至少一个 URL 模式,但不能同时声明这两个属性。

当 URL 模式是唯一要设置的属性时,建议使用 value 属性,否则应使用 urlPattern 属性。

온라인 예제

下面的示例描述了如何使用 @WebServlet 注解。它是一个显示文本 Hello servlet 的简单 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>");         
   }   
}

일반적인 방식으로 Simple.java를 컴파일하고 클래스 파일을 <tomcat에 배치하세요-installationdirectory>/webapps/ROOT/WEB-INF/classes에 위치해 있습니다.

지금, http:을 통해 실행을 시도해 보세요://localhost:8080/Simple 호출할 수 있는 모든 servlet. 웹 페이지에서 다음 출력을 볼 수 있습니다.

Hello servlet

@WebInitParam

@WebInitParam 注解用于为 Servlet 或过滤器指定初始化参数。它在 WebFilter 或 webevlet 注解中使用。下表包含用于 WebInitParam 注解的属性列表。

Sr.No.속성과 설명
1

String name

初始化参数的名称

2

String value

初始化参数的值

3

String description

初始化参数的描述

온라인 예제

@WebInitParam 注解用于为 Servlet 或过滤器指定初始化参数。它在 WebFilter 或 webevlet 注解中使用。下表包含用于 WebInitParam 注解的属性列表。

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

일반적인 방식으로 Simple.java를 컴파일하고 클래스 파일을 <tomcat에 배치하세요-installationdirectory>/webapps/ROOT/WEB-INF/classes에 위치해 있습니다.

지금, http:을 통해 실행을 시도해 보세요://localhost:8080/Simple 호출할 수 있는 모든 servlet. 웹 페이지에서 다음 출력을 볼 수 있습니다.

Hello Servlet
Hello World!

@Webfilter

서블릿 필터를 선언하는 어노테이션입니다. 이 어노테이션은 배포 시 컨테이너에 처리되며, 지정된 URL 패턴, 서블릿 및 디스패처 타입에 대한 필터를 적용합니다.

@WebFilter 어노테이션은 웹 애플리케이션에서의 필터를 정의합니다. 이 어노테이션은 클래스에 지정되며, 선언된 필터에 대한 메타데이터를 포함하고 있습니다. 어노테이션된 필터는 최소한 하나의 URL 패턴을 지정해야 합니다. 다음 표는 WebFilter 어노테이션에 사용되는 속성을 나열합니다.

Sr.No.속성과 설명
1

String filterName

필터의 이름

2

String[] urlPatterns

애플리케이션 필터의 값이나 urlPatterns 배열을 제공합니다

3

DispatcherType[] dispatcherTypes

필터가 적용되는 스케줄러(요청/응답)의 类型

4

String[] servletNames

서블릿 이름을 제공하는 배열

5

String displayName

필터의 이름

6

String description

필터 설명

7

WebInitParam[] initParams

이 필터의 초기화 배열 파라미터

8

Boolean asyncSupported

필터가 지원하는 비동기 작업

9

String smallIcon

필터의 소형 아이콘(있을 경우)

10

String largeIcon

필터의 대형 아이콘(있을 경우)

온라인 예제

다음 예제는 @WebFilter 애노테이션 사용법을 설명합니다. 이는 간단한 LogFilter로, 초기화를 컨솔에 출력합니다. param test param의 값과 현재 타임스탑트. 이는 필터가 요청과 응답 간의 인터페이스 레이어와 유사하게 작동한다는 의미입니다. 여기서는 "/*"urlPattern"을 의미합니다. 이는 모든 서블릿에 적용되는 필터라는 의미입니다.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  
//필터 클래스 구현
@WebFilter(urlPatterns = {"/*}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Parameter")} 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // 초기화 파라미터 가져오기
      String testParam = config.getInitParameter("test-param");
            
      //인ит 파라미터 출력
      System.out.println("테스트 파라미터: ") + testParam);  
   } 
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //현재 타임스탑을 기록합니다.
      System.out.println("Time " + new Date().toString());  
         
      //요청을 필터 라인으로 돌려보냅니다
      chain.doFilter(request,response); 
   }
   public void destroy() {
      /* 필터 인스턴스를 제거하기 전에 호출
      웹 컨테이너에서 제공하는 서비스*/ 
   } 
}

일반적인 방식으로 Simple.java를 컴파일하고 클래스 파일을 <tomcat에 배치하세요-installationdirectory>/webapps/ROOT/WEB-INF/classes에 위치해 있습니다.

지금, http:을 통해 실행을 시도해 보세요://localhost:8080/Simple 호출할 수 있는 모든 servlet. 웹 페이지에서 다음 출력을 볼 수 있습니다.

Hello Servlet
  
Hello World!

지금, servlet 콘솔을 열어. 그곳에서, 값 초기화 매개변수 testparam과 현재 타임스탑이 servlet 알림 메시지와 함께 발견할 수 있습니다.