[JSP&Servlet] 서블릿의 web.xml의 환경 설정 살펴보기

Re_Go·2024년 7월 30일
0

JSP&Servlet

목록 보기
7/19
post-thumbnail

1. web.xml 설정

web.xml은 웹 애플리케이션의 구조와 동작을 정의하는 역할을 하는데요. 서블릿, JSP 페이지, 필터, 리스너 등 웹 애플리케이션의 구성 요소를 정의하고, 이들이 어떻게 매핑되는지를 설정하거나 인증, 권한 부여, 보안 제약 조건 등을 설정하는 코드들이 작성되기도 하는 곳이죠. 이러한 xml 파일은 기본적으로 이클립스에서 Dynamic Web Project를 생성시 존재하지 않을 경우 아래의 사진과 같은 경로로 xml 파일을 생성해주면 됩니다.

xml 파일 기본 구조 살펴보기

이때 web.xml 파일을 텍스트 파일 형식으로 열게 되면 다음과 같은 기본적인 구조의 코드를 확인할 수 있는데요.

첫번째 줄(?xml)은 해당 문서의 버전과 인코딩 방식을 의미하고, 두번째 줄(web-app)은 해당 문서의 요소(xmlns)와 속성(xmlns:xsi)에 대한 고유의 이름을 지정하고, 문서의 스키마(정의 규칙, xsi:schemaLocation 부분)을 정의하는 코드를 의미하게 됩니다.

display-name은 배포되는 웹 에플리케이션의 이름을, welcome-file은 사용자가 해당 웹 애플리케이션에 접근할 때 보여질 루트 페이지를 의미하게 되죠. 이때 다중으로 지정된 경우 첫번째로 나열 된 태그의 파일이 사용자에게 보여지게 됩니다. (아래의 경우 index.html)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>project</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

이 중 우리는 서블릿에 대한 정보를 의미하는 서블릿 태그 작성을 위해 welcome-file 태그를 삭제한 뒤 다음과 같이 작성해 줄겁니다. 새로 생긴 태그를

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

  <display-name>project</display-name>

  <servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.practice.test.MyServlet</servlet-class>
    <init-param>
      <param-name>id</param-name>
      <param-value>Re_Go</param-value>
    </init-param>
    <init-param>
      <param-name>password</param-name>
      <param-value>200,000 subscribers!</param-value>
    </init-param>
     <!-- 서블릿이 웹 애플리케이션 시작 시점에서 로드되도록 설정 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/servletroute</url-pattern>
  </servlet-mapping>

</web-app>
  • servlet : 서블릿의 정보를 등록하는 태그들이 담긴 상위 태그입니다.
  • servlet-name : 서블릿의 이름을 의미합니다.
  • servlet-class : 서블릿의 위치가 작성되는 곳입니다.
  • servlet-mapping : 서블릿과 url 패턴을 매핑할 때의 태그들이 담긴 상위 태그입니다.
  • url-pattern : 서블릿에 매핑할 url 이름을 지정합니다.
  • init-param : xml에서 서블릿의 초기화 변수를 전달할 때 사용합니다. 좀 더 구체적으로 말하자면 서블릿이 초기화될 때 서블릿 인스턴스에 전달되며, 서블릿의 초기 설정이나 구성에 사용되는 태그입니다.
  • param-name : 전달되는 매개변수의 이름을 지정합니다.
  • param-value : 전달되는 해당 매개변수의 값을 지정합니다.
  • load-on-startup : 하나의 xml 파일에 서블릿 태그가 여러개로 지정된 경우 초기화 되는 순서를 지정합니다. 숫자가 작을수록 우선 순위가 높아집니다.

param 값을 init 메서드에 활용해보기

위에서 언급한 param 관련 태그는 서블릿이 초기화 될 때 사용되는 인스턴스라고 했는데요. 그 말인 즉 서블릿의 init 메서드에서 해당 인스턴스를 전달 받아 초기화 작업에 필요한 값을 안정적으로 전달 받을 수 있다는 것을 의미하기도 합니다. 그렇다면 이러한 매개변수를 어떻게 전달 받을까요?

우선 해당 서블릿 컨테이너에서 init 메서드를 작성한 뒤 매개변수로 ServletConfig 인터페이스를 받도록 작성해 줍니다. 이때 이 ServletConfig 객체는 서블릿이 최초로 실행되는 시점에 자동적으로 생성되므로, 만약 xml 파일 내에 param 태그로 매개변수를 지정해 주었다면 이에 대한 처리를 init 메서드에서 해주어야 한다는 것이죠.

String id, password; 
@Override
public void init(ServletConfig config) throws ServletException {
	id = config.getInitParameter("id");
	password = config.getInitParameter("password");
}

profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글