English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
현재까지 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 用于声明带有容器的 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 注解用于为 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!
서블릿 필터를 선언하는 어노테이션입니다. 이 어노테이션은 배포 시 컨테이너에 처리되며, 지정된 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 알림 메시지와 함께 발견할 수 있습니다.