톰캣에 의한 서블릿 코드 배치와 요청 방법
Class 파일의 약속된 장소가 있다. -> WEB-INF/classes/패키지명/클래스명/클래스파일
하지만 절대로 실행되지 않는다. 사용자에 의해 요청되는 디렉토리가 절대 아니다.
그렇기에 설정과 프로그램 코드를 넣는 것이다.
Server의 디렉토리임으로 Client 접근할 수 없는 private 영역인 것이다.
그럼 요청은 어떻게 할까? 흐름을 대략적으로 알아보자
Client -->>GET:1/2/3/4 -->>WAS(톰캣) --->>URL과 맵핑된 Servlet 코드를 찾아서 실행해줌
즉 사용자가 요청한 이름에 Mapping 되어있는 Servlet 코드를 실행하여 결과를 돌려주는 방식이다.
1.사용자에게는 다른 이름으로 요청하게끔 해준다.
2.URL 형식으로 WEB-INF 가 아닌 다른 경로를 사용할 수 있도록 해준다.
그렇다면 어떻게 맵핑하며 어떻게 다른 경로로 요청하게 해줄 것 인가?
WEB-INF/web.xml로 가자.
<servlet>
<servlet-name>soo</servlet-name>
<servlet-class>SooMin</servlet-class> 패키지가 있다면 패키지명까지 적어줘야한다.
</servlet>
<servlet-mapping>
<servlet-name>soo</servlet-name> /hello 요청이 오면 soo을 찾아 실행해주세요!
<url-pattern>/hello</url-pattern> 사용자에게 주는 Servlet이름
</servlet-mapping>
즉 http://~~/hello 가 요청으로 오면 mapping 된 SooMin.class 를 실행한다는 것이다.
사용자는 /hello로 요청하고 이후에는 톰캣(WAS)이 요청에 맞는 Servlet Class 를 찾아서 실행해준다는 의미이다.
톰캣 -> webapp ->ROOT -> WEB-INF->classes->해당 클래스 파일 or 패키지 위치
이후 /hello로 접근하면 Tomcat 콘솔에 출력이 될 것이다.