[JSP] 배포서술자(web.xml) 에서 URL 을 서블릿에 매핑하기.

반응형



현재 계속하여 HTTP 프로토콜, 웹서버, 컨테이너, 그리고 서블릿에 대해 포스팅 하고 있습니다.


자 이번에는 서블릿을 배포서술자 라고 하는 web.xml ( DD 라고 부릅니다 ) 에 매핑하는 방법을
포스팅 할까 합니다.
읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


우선 매핑을 하기전에 서블릿은 여러개의 이름을 가질 수가 있는데요,
그것부터 잠깐 소개하고, 바로 매핑을 해보지요~



서블릿이 가질 수 있는 이름 3가지

서블릿은 3가지의 이름을 가질 수 있습니다.
  • 서블릿에는 classes/ATest.class 처럼 파일 위치명이 있습니다.

  • 서블릿에는 배포명 이란것이 있는데, 이 이름은 내부적으로만 사용되는 이름이며, 클래스명과 파일이름과는 꼭 동일할 필요는 없습니다.

  • 서블릿의 공공(public) 이름이 있습니다. 이 이름은 URL 자체의 이름이며 HTML 코드안에 하드코딩하는 이름입니다.

자, 여기에서 파일 이름을 HTML 에 하드코딩하게 되면 어떻게 될까요?
만일, 디렉토리 구조가 바뀌게 된다면 하드코딩된 부분을 모주 찾아서 수정해야 될 것입니다.
또한 보안적으로도 서버 디렉토리를 공개하는것과 다름없이 때문에 설정한 결과를 거치지 않고서도
직접 주소란에 서블릿명을 기입하여 접속할 지도 모르죠.

매핑은 이러한 문제를 해결 합니다.
위치나 이름이 바뀌어도 수정하기가 쉬워지는 이점도 있습니다.


배포서술자(web.xml) 에서 URL 을 서블릿에 매핑하기

우선, 매핑을 하기전에 사전작업을 해야할 것이 있습니다.
맨 먼저 URL 이름을 내부에서만 사용하는 이름으로 매핑하고,
그 다음 내부 이름을 실제 클래스 이름으로 매핑하면 끝이지요.


여기에 URL 매핑을 위한 두가지 항목이 있습니다.

  •   <servlet> : 내부에서만 사용하는 이름과 완전한 클래스명을 서로 매핑합니다.
  •   <servlet-mapping> : 내부에서 사용하는 이름과 URL 이름을 서로 매핑합니다.

 



매핑해 본 배포서술자 ( web.xml ) DD 입니다.



<servlet-name><servlet-mapping> 에서 사용할 내부 이름을 정의합니다.


경로를 포함하는 서블릿 명을 기입합니다. 여기에서 .class 처럼 확장자명은 제외!


요청이 들어오면 <servlet-mapping> 에서 항목을 검색하기 시작합니다.
요청 URL 에 대한 해당 서블릿을 매핑하여 찾게 되죠.


클라이언트가 사용하는 서블릿 이름입니다.
가공의 이름이며 실제 서블릿명은 아닙니다. ( 와일드카드 문자(*) 가능 )


이렇게 하면 매핑이 완료되었습니다.
컨테이너(톰캣)을 재 시작한뒤, 매핑되어진 URL 주소로 요청이 오게되면
컨테이너는 web.xml 을 검색하여 매핑된 서블릿 클래스를 호출하게 됩니다.
==> 호스트명/경로/select1  이라는 요청이 왔다면 서버는 sername1 이라는 클래스를 실행하게 됩니다.


web.xml ( DD ) 의 이점

그렇다면 이렇게 조금 복잡한 web.xml ( DD ) 를 왜 써야 할까요?


  • 작성한 소스코드를 수정하지 않고도 웹 어플리케이션을 '커스터마이징' 할 수 있습니다.
  • 이미 테스트 된 소스코드의 수정을 최소화 합니다 
  • 소스코드가 없어도 수정이 가능합니다.
  • 재 컴파일 하지않고 서버의 자원을 변경할 수 있습니다.
  • 접근제한, 보안, 오류페이지를 설정하고 초기화 값의 구성 등을 할 수 있습니다.




자, 이제 서블릿 매핑은 할 수 있겠죠?

조금씩 조금씩 글을 써감에 있어서 저의 지식도 늘어남을 느낍니다.
감사합니다.




반응형

댓글

Designed by JB FACTORY