ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servlet-JSP 순수to웹 (1) context와 톰캣
    Web/Servlet-JSP 2023. 5. 21. 11:40

     

    통합개발환경에서 서블릿을 사용해보기 이전에 메모장과 톰캣을 이용하여 정적 페이지를 띄워보며,

    server.xml파일 고쳐보고 context에 대해 조금 알아보자 

     

     

    1. 메모장 to 톰캣 root(홈디렉토리) 폴더

     

    1.1 메모장에 아무글씨나 써서 저장한 다음 톰캣 폴더로가서 루트 디렉토리에 저장해보자 

    톰캣 폴더 webapps->root

    1.2이제 톰캣을 구동하고  url에 localhost:8080/메모장이름.txt를 요청해보자 (자신 컴퓨터 아이피를 사용해도 된다) 

    1.3 자신이 작성한 txt파일이 나오는 것을 볼 수 있다!. 

     

    톰캣의 server.xml파일을 열고 내리다보면, <host> 부분이 있다 여기에 appBase라는 곳에 $CATALINA_HOME 의 값(톰캣이 설치된 주소)이 할당되어 있어서 톰캣설치주소/webapps가 기본주소로 등록되어있고, 추가로 ROOT까지 자동 포함되어 있다. 

     

    즉, CATALINA_HOME/webapps/ROOT가 기본 홈 디렉토리로 

    톰캣이 구동되어 url에 localhost:8080이 입력되면,

    톰캣은 위 폴더를 기점으로 소스들을 찾고 요청에 따라 응답하기를 대기한다. 

    여기에 우리가 /(홈 디레토리의미)메모장이름.txt를 입력하면 홈디레토리에서 이를 찾아서 반환하는 것이다.

     

     

     

    2. 홈디렉토리 변경해보기 

     

    appBase를 변경해 줄 수도 있고, context를 추가해줄 수 도 있는데, context를 추가해보자.

     

    2.1 server파일에 context를 추가하지 않으면, CATALINA_HOME/webapps/ROOT이 홈디렉토리이다.

          원하는 폴더로 context를 추가해보자

     

    2.2 <host>밑 부분에 

          <Context path="" docBase="원하는 폴더 path" reloadable="true" />를 추가하면 된다

    바탕화면에 jnew/hinew라는 쓸모없는 폴더를 만들어서 context를 추가해보았다.

    후에 톰캣을 구동하면,

    2.3 이렇게 뜰 것이다. 이는 웰컴페이지 설정 때문이다. 우리가 원하는 홈디렉토리 변경이 잘 이루어졌는지 테스트 해보기 위해 원래 홈 디렉         토리에는 없던, start파일을 localhost:8080/start.txt로 열어보면 잘 열리는 것을 확인할 수 있다.

     

    3. 홈디렉토리를 변경하지 않고 컨텍스트 추가해보기 

     

    방금 변경한 context에 path를 ""이 아닌 /new로 수정해보자. 어떤일이 일어날까?

     

    기본 홈디렉토리인 webapps/root와 개인적으로 만든 폴더는 물리적으로 같은 폴더 내에 위치하지 않는데도 불구하고,

    /(홈)new/start.txt를 요청하면, 마치 홈디렉토리안에 내가 만든 폴더가 있는 것 처럼 찾아준다. 

    이는 "/new"라는 가상의 경로와 내가 만든 폴더 위치를 일종의 맵핑, 엮어준 것이다

    이를 이용하여 우리는 여러 폴더들을 물리적으로 다른 공간에 두고, context를 사용해서 마치 하나의

    루트 디렉토리에 하위 폴더로 있는 것 처럼 엮어줄 수 있는 것이다. 

     

    티스토리를 예로 들어보자. 티스토리의 주소가 홈 디렉토리라고 가정하면,

    피드 - 스토리 - 스킨 -포럼의 4개의 탭으로 각각의 웹 페이지를 요청할 수 있을 것이다. 그런데, 홈페이지 규모가 커지면서 

    각각의 탭을 하나의 홈디렉토리 안에 넣어놓기 부담스럽거나, 따로 빼고 싶다면 다른 물리적 장소에서 개발하고 context를 통해서 연결하는 것이다. 

    위와 같이 피드를 누르면 /feed와 맵핑되어있는 디렉토리를 기준으로 작동할 것이다.

    /feed를 입력하면, /feed와 연결된 홈디렉토리가 있는 것이다.

     

    정리하자면 context를 통해 우리는 복잡한 웹사이트를 만들 때, 하나의 폴더안에 모든 소스를 때려박지않아도 상관없게 되는 것이다! 티스토리를 예로 들면 티스토리 웹 페이지라는 하나의 큰 문맥은 유지하면서 피스, 스토리, 스킨 ,포럼등 각각의 서비스들은 따로 따로 개발되고 큰 문맥에 엮어주는 것이다. 

    그리고 이러한 context설정은 server.xml파일을 통해 할 수 있다. 

     

     

    참고자료:

    유튜브 - 뉴렉처 servlet-jsp강의 (6)

    https://byeonely.tistory.com/79

     

     

Designed by Tistory.