8.1 서블릿 주석 소개
Tomcat은 버전 7부터 Servlet API 3.0 웹 서블릿 사양을 지원하기 시작했습니다 . 특히 이라는 패키지가 등장했습니다 javax.servlet.annotation
. 여기에는 서블릿 클래스에 주석을 추가하는 데 사용할 수 있는 다양한 유형의 주석이 포함되어 있습니다. 주석을 사용하는 경우 배포 설명자(web.xml)가 필요하지 않습니다.
가장 유용한 주석 목록:
주석 | 설명 | |
---|---|---|
1 | @WebServlet |
서블릿 선언 |
2 | @WebInitParam |
초기화 매개변수를 지정합니다. |
삼 | @WebFilter |
웹 필터 선언 |
4 | @WebListener |
웹 라이저 선언 |
5 | @ServletSecurity |
보안 설정을 구성할 수 있습니다. |
예:
@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!");
}
}
하나의 주석으로 서블릿을 선언하고 /api/*
.
8.2 서블릿 매핑 설정
주석에는 @WebServlet
주석이 설명하는 서블릿의 매우 유연한 구성을 허용하는 많은 매개변수가 있습니다. 주요 사항을 살펴 보겠습니다.
기인하다 | 설명 | |
---|---|---|
1 | name |
서블릿 고유 이름(web.xml에서와 같이) |
2 | displayName |
사람이 읽을 수 있는 서블릿 이름 |
삼 | description |
서블릿 설명 |
4 | value |
매핑할 URL을 설정합니다. |
5 | urlPatterns |
매핑할 URL 목록 지정(값 대신 사용) |
6 | initParams |
서블릿의 시작 매개변수를 설정할 수 있습니다. |
7 | asyncSupported |
서블릿이 비동기적으로 실행될 수 있음을 지정합니다(HTTP/2). |
8 | loadOnStartup |
서블릿 시작 우선순위를 제어하는 시퀀스 번호 |
9 | smallIcon |
작은 서블릿 아이콘을 설정합니다. |
10 | largeIcon |
큰 서블릿 아이콘을 설정합니다. |
여기에 몇 가지 흥미로운 점이 있습니다.
먼저 value
및 는 urlPatterns
상호 교환 가능한 속성입니다. 둘 다 서블릿이 매핑되어야 하는 URL 목록을 지정할 수 있습니다.
둘째, 이 매개변수는 asyncSupported
서블릿이 HTTP/2 프로토콜을 통해 비동기 요청을 올바르게 처리하는지 여부를 나타냅니다.
세 번째 중요한 속성은 initParams
ServletContext에 배치될 매개변수 목록을 설정할 수 있도록 합니다.
예:
@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 필터 매핑 설정
위에서 언급했듯이 필터는 서블릿의 유틸리티 유형이며 서블릿처럼 구성됩니다. 주석이 갖는 속성은 다음과 같습니다 @WebFilter
.
기인하다 | 설명 | |
---|---|---|
1 | filterName |
필터 고유 이름(web.xml에서와 같이) |
2 | displayName |
사람이 읽을 수 있는 필터 이름 |
삼 | description |
필터 설명 |
4 | value / urlPatterns |
매핑할 URL 목록을 설정합니다. |
5 | dispatcherTypes |
DispatcherTypes 목록을 지정합니다. |
6 | servletNames |
적용할 서블릿 목록을 지정합니다. |
7 | initParams |
필터의 시작 매개변수를 설정할 수 있습니다. |
8 | asyncSupported |
필터가 비동기적으로 실행될 수 있음을 지정합니다(HTTP/2). |
9 | smallIcon |
작은 필터 아이콘을 설정합니다. |
10 | largeIcon |
큰 필터 아이콘을 설정합니다. |
특정 서블릿에 대한 모든 요청을 가로채는 필터의 예 :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
여러 매개변수가 지정된 필터의 예 :
@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에 대한 유형이 지정된 필터의 예 :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
다음 강의에서 필터와 서블릿의 목적에 대해 자세히 알아볼 것입니다.
GO TO FULL VERSION