📌 웹 배포 서술자 (web.xml) – 서블릿 컨테이너 설정 파일
"web.xml은 웹 애플리케이션의 동작을 제어하는 설정 파일로, 웹 서버(Tomcat)와 서블릿 컨테이너의 '입구' 역할을 한다!"
✅ web.xml이 하는 일
📌 "web.xml은 서블릿 컨테이너(Tomcat)에서 요청을 어떻게 처리할지 정의하는 설정 파일!"
🔹 주요 역할
| 역할 | 설명 |
| ServletContext 초기 파라미터 설정 | 웹 애플리케이션 전역 설정값 지정 |
| Session 유효 시간 설정 | 사용자의 로그인 세션 유지 시간 설정 |
| Servlet/JSP 정의 및 매핑 | 서블릿과 URL을 연결 |
| MIME 타입 매핑 | 파일 형식과 응답 형태 지정 |
| Welcome File List | 기본 홈 페이지 설정 (index.jsp 등) |
| Error Pages 처리 | 특정 오류 발생 시 보여줄 페이지 설정 |
| 리스너/필터 설정 | 요청 필터링 및 특정 이벤트 감지 설정 |
| 보안(Security) 설정 | 접근 제한, 인증/인가 처리 |
📌 "web.xml은 서블릿 컨테이너의 동작 방식을 결정하는 핵심 설정 파일이다!"
✅ web.xml의 주요 기능 설명
"web.xml은 웹 애플리케이션이 동작하기 전에 서버가 읽고 실행하는 설정 파일이다!"
1️⃣ ServletContext 초기 파라미터 설정
- 웹 애플리케이션 전체에서 사용할 수 있는 전역 변수 설정
📌 예제
<context-param>
<param-name>appName</param-name>
<param-value>My Web App</param-value>
</context-param>
📌 "초기 설정값을 정해두면, 모든 곳에서 동일한 값을 사용할 수 있다!"
2️⃣ Session 유효 시간 설정
- 세션(Session): 사용자의 로그인 정보 또는 특정 상태를 유지하는 객체
- 세션 유지 시간을 설정하여 자동 로그아웃 처리 가능
📌 예제
<session-config>
<session-timeout>30</session-timeout> <!-- 단위: 분 -->
</session-config>
📌 "세션을 설정하면 사용자가 일정 시간 동안 비활성 상태이면 자동 로그아웃된다!"
3️⃣ Servlet/JSP 정의 및 매핑
- 클라이언트의 요청 URL을 특정 서블릿과 연결하는 역할
📌 예제
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
📌 "클라이언트가 /hello를 요청하면 HelloServlet이 실행된다!"
4️⃣ MIME 타입 매핑
- 파일 확장자별 응답 타입 설정
- 브라우저가 응답을 적절하게 해석할 수 있도록 도와줌
📌 예제
<mime-mapping>
<extension>json</extension>
<mime-type>application/json</mime-type>
</mime-mapping>
📌 "브라우저가 application/json으로 응답을 처리하도록 설정할 수 있다!"
5️⃣ Welcome File List (기본 페이지 설정)
- 사용자가 특정 페이지를 요청하지 않을 때 기본으로 보여줄 페이지 설정
📌 예제
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
📌 "index.html 또는 index.jsp가 기본 페이지로 설정된다!"
6️⃣ Error Pages 설정
- 에러가 발생했을 때 표시할 페이지를 설정
- 사용자가 이해할 수 있는 에러 메시지를 제공할 수 있음
📌 예제
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error/500.html</location>
</error-page>
📌 "잘못된 요청이 오면 자동으로 /error/404.html 페이지를 보여준다!"
7️⃣ 리스너(Listeners)와 필터(Filters) 설정
- 리스너(Listeners): 웹 애플리케이션에서 특정 이벤트를 감지
- 필터(Filters): 요청과 응답을 가로채어 수정
📌 예제 (필터)
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
📌 "모든 요청의 문자 인코딩을 UTF-8로 설정할 수 있다!"
8️⃣ 보안(Security) 설정
- 특정 페이지 접근을 제한하거나 로그인 인증 기능 적용 가능
📌 예제
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
📌 "/admin/* 경로는 ADMIN 권한이 있는 사용자만 접근 가능하다!"
✅ web.xml의 핵심 개념 정리
| 개념 | 설명 |
| ServletContext 초기 파라미터 | 웹 애플리케이션 전역 변수 설정 |
| Session 유효 시간 설정 | 사용자 로그인 세션 유지 시간 설정 |
| Servlet/JSP 정의 및 매핑 | 특정 URL과 서블릿을 연결 |
| MIME 타입 매핑 | 파일 확장자별 응답 형식 설정 |
| Welcome File List | 기본 페이지(index.html) 설정 |
| Error Pages 처리 | 특정 오류 발생 시 보여줄 페이지 설정 |
| 리스너/필터 설정 | 요청 필터링 및 특정 이벤트 감지 |
| 보안(Security) 설정 | 특정 페이지 접근 제한 및 인증 처리 |
✅ web.xml이 중요한 이유
📌 "웹 애플리케이션이 실행될 때 가장 먼저 실행되는 설정 파일!"
📌 "서버의 입구 역할을 하며, 서블릿 컨테이너(Tomcat)가 동작하는 방식을 결정한다!"
📢 마무리
web.xml은 서블릿 컨테이너의 동작을 제어하는 중요한 설정 파일입니다.
이를 통해 초기 설정, 세션 관리, 서블릿 매핑, 에러 처리, 보안 설정 등을 할 수 있습니다.
📌 "web.xml을 이해하면 웹 애플리케이션이 어떻게 동작하는지 전체적인 흐름을 파악할 수 있다
'스프링(Spring) 및 자바(JAVA)' 카테고리의 다른 글
| 스프링 부트 개념 정리 - 이론12 (0) | 2025.03.11 |
|---|---|
| 스프링 부트 개념 정리 - 이론10 (0) | 2025.03.11 |
| 스프링 부트 개념 정리 - 이론09 (0) | 2025.03.09 |
| 스프링 부트 개념 정리 - 이론08 (0) | 2025.03.09 |
| 스프링 부트 개념 정리 - 이론07 (0) | 2025.03.08 |