본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 37일차 -58

by oncerun 2020. 4. 21.
반응형

 

web.xml

 

톰캣은 Servlet Contanier, Servlet Engine을 이용하여 Servlet을 실행하여 작동됩니다.

 

톰캣을 설치하면 Root-Web-INF안에 web.xml파일이 존재하는 것을 확인할 수 있을 것입니다.

web.xml파일에는 클라이언트가 페이지의 URL을 요청했을 때 해당되는 Servlet 파일을 실행시킬 서블릿들을 매핑해놓은 파일입니다. 톰캣은 Web.xml에 매핑된 JAVA파일을 Servlet으로 변환시키고, 변환된 JAVA파일 즉Servlet을 실행하여 응답합니다.

(여기서 매핑(mapping)이란 하나의 값을 다른 값으로 대응시키는 것을 말한다.)

 

Servlet으로 변환되기 위해서는 기본적으로 다음 구조를 만족하여야 합니다.

 

톰캣에서 제공하는 Servlet라이브러리를 사용하며, HttpServlet을 상속받아야 합니다.

HTTP 요청 Method인 doget() , doPost()를 오버 라이딩해야 합니다.

(doGet()과 doPost()는 브라우저에서 지정한 방식에 따라 두 개의 메서드 중 하나를 선택해 무엇을 호출할지 결정하기 위함입니다.)

 

우리는 어제 mapping을 직접 Web.xml에서 코드로 작성해주었습니다.

<servlet>--컨테이너가 관리하는 서블릿을 표시합니다.
<servlet-name>매핑을 구분하기 위한 이름</servlet-name>
<servlet-class>서블릿 클래스 이름</servlet-class> //패키지까지 정확히 적어주어야합니다.
</servlet>

<servlet-mapping>     --URL을 통해 요청을 받으면 <servlet-mapping>항목을 검색해 해당URL을 담당하는 서블릿을 찾습니다.
<servlet-name>매핑을 구분하기 위한 이름</servlet-name>
<url-pattern>/서블릿에 대응하는 URL</url-pattern>
</servlet-mapping>

 

 이 방식은 Deployment Descriptor방식입니다. 사용방법을 정리해보겠습니다.

- web.xml 파일을 생성한 뒤 web-app태그 내부에  Servlet을 정의합니다.

- <servlet> 태그 안에 위치하는 Servlet들은 컨테이너가 관리하는 서블릿을 의미합니다.

- <servlet-name> 태그는 단지 Deployment Descriptor가 서블릿 구분을 위해서 사용하는 이름입니다. 실제 클래스명이나 클라이언트에서 호출한 URL 이름과는 별개입니다.

- <servlet-mapping>은 매핑에 관한 정보입니다.

- <servlet-name>이 <servlet> 태그 안에 있는 이름과 동 일한 것을 확인할 수 있습니다.

- <url-pattern>은 클라이언트에서 사용되는 이름입니다.

 

web.xml을 통해 매핑을 해주게 된다면 유연성과 보안성이 증대되는 효과를 얻을 수 있습니다.

클래스의 위치나 이름이 변경되었을 때 배포자는 해당 부분만 손쉽게 변경하여 수정할 수 있으며,

클라이언트에게 실제 클래스의 위치를 숨겨주어 보안성이 증대된다고 볼 수 있습니다.

 

Annotation

하지만 서블릿 초기와 달리 servlet 3.0부터는 Annotation을 지원하게 되면서 간단하게 서블릿 매핑이 가능해졌습니다.

간단히 클래스 위에 어노테이션을 이용해 URL을 매핑을 하면 단 한 줄을 코드로 매핑을 할 수 있어 편의성이 뛰어납니다.

 

@WebServlet("/hello")

public class Index extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException {

	}
}

@WebServle("URL")로써 클라이언트가 이런 URL을 받았는데 어떤 서블릿을 줘야 해? 라며 찾을 때 클래스 위에 있는 Servlet Annotation을 확인해 해당 서블릿을 클라이언트에게 응답하게 됩니다.

 

Java Annotation 

자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다.  /위키백과/

 

 

반응형

댓글