-
[Web] 웹 애플리케이션 디렉토리 구조/ContextRoot/ContextPath카테고리 없음 2022. 4. 10. 17:29
웹 애플리케이션 디렉토리 구조와 ContextRoot
Maven 프로젝트 디렉토리 구조 -> 배포 후 -> Java Build Path 설정에 따라 웹 애플리케이션 디렉토리 구조로 변경됨
webapp이느니 webcontent이느니는 웹 애플리케이션의 루트라는 것을 알려주는 것으로 배포 후 이름과는 아무련 연관이 없다. webapp,webcontent 요놈을 루트(ContextRoot)로 하위 디렉토리 구조를 설계하라는 의미
프로젝트상 src/main/mainSubDirectory는 Java Build Path 설정에 포함되어 있지 않다.
-> 배포 후 웹 애플리케이션 디렉토리 구조 내부에 포함 안됨
(임시 배포 확인)
워크스페이스\.metadata\.plugins\org.eclipse.wst.server.core\tmp숫자\wtpwebapps\프로젝트명
프로젝트상 src/main/java, src/main/resources는 Java Build Path 설정에 따라 루트/WEB-INF/classes에 매칭되어 들어간다.
프로그램이 돌아갈 때(임시 배포) 알기 쉽게 루트를 프로젝트 이름으로 만들어준다.
루트/WEB-INF/web.xml는 그대로
루트/WEB-INF/lib에는 depency에 포함된 라이브러리들이 포함된다.
프로젝트상 루트 하위 모든 파일들도 포함된다.
ContextPath
하나의 톰캣에서 여러 웹 애플리케이션을 돌릴 수 있으므로 웹 애플리케이션을 구분하기 위해 ContextPath를 사용
Maven Project 생성시 기본으로 ContextPath가 프로젝트명(SpringProject)으로 설정된다.
ContextPath는 "SpringProject" -> localhost:8080/SpringProject 의 지점이 ContextRoot가 된다.
-> localhost:8080/SpringProject이 웹 어플리케이션 디렉토리 구조의 루트가 된다.
루트/static/test.html
<!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> 루트/static/test.html<br> </body> </html>
localhost:8080/SpringProject/static/test.html
하나의 톰캣으로 여러 애플리케이션을 돌리지 않는 이상 귀찮게 ContextPath를 입력할 필요가 없으니 /로 바꿔준다.
그러면 localhost:8080 이 ContextRoot가 된다.
(참고로 ContextPath를 변경하면 톰캣에서 웹 애플리케이션을 내렸다가 다시 올려야 하는 것 같다)
WEB-INF 디렉토리는 서버쪽에서만 사용되는 디렉토리로 사용자가 요청할 수 없다.