
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0"
metadata-complete="true">
<!-- 서블릿 이름은 유일해야함 -->
<servlet>
<servlet-name>hello-servlet</servlet-name>
<servlet-class>servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello-servlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>board-servlet</servlet-name>
<servlet-class>servlets.BoardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>board-servlet</servlet-name>
<url-pattern>/board</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login-servlet</servlet-name>
<servlet-class>servlets.LoginServlet</servlet-class>
<init-param>
<param-name>key1</param-name>
<param-value>value1</param-value>
</init-param>
<init-param>
<param-name>key2</param-name>
<param-value>value2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>login-servlet</servlet-name>
<url-pattern>/member/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>join-controller</servlet-name>
<servlet-class>controllers.JoinController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>join-controller</servlet-name>
<url-pattern>/member/join</url-pattern>
</servlet-mapping>
<filter>
<filter-name>filter-ex01</filter-name>
<filter-class>filters.ex01</filter-class>
</filter>
<filter-mapping>
<filter-name>filter-ex01</filter-name>
<url-pattern>/member/login</url-pattern>
</filter-mapping>
<filter>
<filter-name>filter-ex02</filter-name>
<filter-class>filters.ex02</filter-class>
</filter>
<filter-mapping>
<filter-name>filter-ex02</filter-name>
<url-pattern>/member/login</url-pattern>
</filter-mapping>
<filter>
<filter-name>filter-common</filter-name>
<filter-class>filters.CommonFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter-common</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
package controllers;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hi")
public class HiController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<h1>안녕하세요</h1>");
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0"
metadata-complete="true">
✅ metadata-complete="true" : metadata-complet="true"를 포함하게 되면 스캔해야 하는 시간을 줄이게 된다는 것이다. 즉 클래스들을 스캔을 하지 않아 내가 설정한 annotations들을 읽어들이지 않는다.
metadata-complete="true"의 디폴트값은false이다.