천발무금
976
2017-07-05 12:26:14
2
1563

웹에 대해 전반적인 개념 및 상용 서비스 구성에 대해 여쭤보고자 합니다!


초보개발자 인사드립니다~


웹을 공부하면서 웹이 동작하는 개념을 파악하고 싶다는 욕구가 계속 생겨서 이렇게 질문 드립니다.


아래 그림은 java web(스프링 프레임웤) 개발 시 아래와 같이 서버 환경을 구성해보았습니다.




1. 제가 그린(생각하는) 구성이 어느정도 맞는지가 궁금합니다.



2. jsp와 서블릿에 대한 개념이 많이 헷갈립니다 ㅎㅎ

웹서버와 클라이언트가 주고받는건 html인데, 실제로 작성은 개발자가 jsp로 작성하잖아요?ㅎㅎ

jsp는 서블릿으로 변환되고 서블릿은 컴파일 되는 것으로 알고있는데.. 그럼 jsp는 결국 JAVA코드로 변환되는 것 아닌가 싶어서요 ㅎㅎ JAVA코드로 변환되면 html로 어떻게 보여주는건지 궁금합니다.


3. 개발자가 스프링프레임웤으로 개발한 소스는 전부 WAS에만 배포 하는건지 궁금합니다.


4. 배포할 때 보통 war나 jar로 배포해봤는데, 그럼 Tomcat이 알아서 war프로젝트를 동작시켜 주는 건가요?(Tomcat에 war나 jar 경로 정도는 알려줘야겠죠?ㅎㅎ)


5. 클라이언트에서 웹서버로 get이나 post방식으로 URL등이 전달된텐데 웹서버는 WAS로 해당 URL정보를 그대로 전달하여, WAS에서 DispatcherServlet부터 ViewResolver까지 다 처리하는 건가요?


6. 5번에서 ViewResolver까지 처리했을 때 View를 웹서버로 보내주나요?

그렇다면 WAS에서 View를 html로 변환해서 WAS->WEB서버로 보내주는건가요?

아니면, WEB서버에서 View를 받은 다음에 HTML로 변환하는건가요?


7. 5번, 6번에서의 View는 컴파일된 jsp인가요?


(5번, 6번, 7번 질문에 대해 참고로 확인했던 이미지입니다.)


미리 답변 달아주시는 분들께 감사드립니다!!



-1
1
  • 답변 2

  • fender
    19k
    2017-07-05 12:37:01 작성 2017-07-05 12:38:39 수정됨

    1. 반드시 그런 모양만 있는 것은 아니지만 흔하게 구성되는 모양은 맞습니다.

    2. 네 맞습니다. 실제 동작이 궁금하시다면 탐캣의 경우 JSP 작성시 work 경로 아래에 생성되는 서블릿 소스를 살펴보셔도 좋을 듯 합니다.

    다만, 개인적으로는 가능하면 기술은 API와 스펙의 수준에서 이해하는 것이 좋은 습관이라고 생각합니다.


    3. 기본적으로는 서블릿 컨테이너가 필요하고, 스프링 부트와 같은 대안도 있습니다. 참고로 스프링MVC스프링 프레임워크의 단위 모듈일 뿐입니다. 스프링 프레임워크로 개발한 프로젝트는 웹과 무관한 내용일 수 있습니다.

    4. 이는 탐캣만의 기능이라기 보단 모든 서블릿 컨테이너가 따라야하는 규약입니다. 따라서 해당 규칙을 찾아서 살펴보시는 것이 정확합니다.

    5. 해당 구성에서는 대체적으로 맞는 이야기입니다.

    6. 해당 구성에서 웹서버의 역할은 클라이언트의 요청을 그냥 WAS로 라우팅해주는 것 밖에 없습니다. 그렇기 때문에 굳이 그 이상의 역할로 이해할 필요는 없을 것 같고, 어찌됐던 클라이언트로 전송하는 내용은 HTML 등 브라우저가 이해할 수 있는 내용이라는 점만 상기하시면 될 듯 합니다.

    7. 스프링MVC에서 '뷰(View)'는 추상적인 개념입니다. API를 보시면 아시겠지만 반드시 JSP일 필요는 없습니다.

  • 천발무금
    976
    2017-07-05 13:49:36

    fender님 답변 감사드립니다.

    몰랐던 부분이 해소도 많이 됬고, 어떤걸 살펴봐야할지도 알게되었습니다.


    fender님께서 전에 올려주셨던, 소프트웨어 전문화에 대한 글도 감명받으면서 잘 읽었습니다. ㅎㅎ

    답변에서 말씀주신 API와 스펙의 수준에서 이해하는 습관을 추천해 주신 것도 이것과 관련된 부분이 아닌가 싶습니다.


    답변 다시한 번 감사드립니다 ^^

  • 로그인을 하시면 답변을 등록할 수 있습니다.