본문 바로가기
백수/java

Tomcat, JSP, Servlet

728x90
반응형

[WEB 서버 단일 구성]

  • 개발자는 미리 모든 페이지를 다 만들어 둔 뒤 웹서버에 올려두고 사용자가 URL을 입력하거나 하이퍼링크가 걸린 글/그림 등을 클릭하면 웹서버가 해당 페이지를 사용자에게 보내줍니다.
  • 웹 브라우저는 페이지를 받아 화면으로 출력 후 사용자에게 시각화하여 보여 줍니다.
  • 페이지는 HTML, CSS, JavaScript로 이루어져 있습니다.
    • HTML : 뼈대
    • CSS : HTML 콘텐츠를 꾸며주는 정적 언어
    • JavaScript : 동적 스크립트로 상황에 따라 다른 결과를 출력할 수 있는 동적인 스크립트 언어
  • HTML, CSS, JavaScript 모두 웹서버에서 코드를 보내주면 브라우저가 해석해서 실행합니다.
  • 사용자가 요청하면 해당 페이지를 넘겨주는 정적인 방식입니다.
  • 단점으로 필요한 페이지마다 자바스크립트 등으로 복잡한 로직을 구현해야 합니다.
  • 또한 복잡한 로직이 들어있는 페이지를 모두 사용자에게 전송해야 하는 문제도 있습니다.

[WEB-WAS 구성]

  • 기존 웹서버는 사용자가 요청하는 페이지를 단순하게 변환했으면 WAS는 사용자의 요청 내용을 받아 짜인 로직대로 처리 후 웹페이지를 만들어 사용자에게 응답해주는 방식입니다.
  • 만들어진 웹 페이지는 웹서버를 통해 사용자에게 전달됩니다.
  • 자바를 사용하여 로직을 처리하기 때문에 복잡한 로직을 처리하기 용이하고 사용자는 웹서버가 주는 페이지만 받아 실행하여 내부 로직을 알 수 없어 보안에도 효과가 있습니다.
  • 복잡한 연산은 성능이 좋은 서버에서 해결하고 사용자에게 결괏값 만을 보내 주어 결과를 빠르게 확인 가능하고 코드의 양이 줄어 네트워크 부하도 줄일 수 있습니다.
    • WAS 서버 :
      • 동적인 콘텐츠를 제공하는 서버입니다.
    • WEB 서버 :
      • 정적인 콘텐츠를 제공하는 서버입니다.
  • WAS, WEB 서버는 물리적으로 구분 가능하며 한 서버에 기능적으로 구분 가능 합니다.
  • 서로 역할을 적절히 분담하여 리소스를 효율적으로 사용 가능 합니다.

[WEB-WAS-DB 구성]

  • 사용자, 서버 간 데이터를 주고받는 일이 많이 지며 이를 효율적으로 저장하고 수정하기 위해 DBMS가 개발되었습니다.
  • DB에 서버가 연산을 위해 필요한 데이터를 저장하고 WAS에서 연산을 수행하며 필요한 정보를 DB에서 가져오고 수정합니다.
  • DB에 주요 정보를 저장함으로써 정보의 구조를 효율적으로 구성 가능하며 사용자가 직접 주요 정보에 접근 불가 하게 하여 보안을 강화합니다.
  • 또한 사용자는 서버에 정보를 저장해 둠으로써 기기에 제한을 받지 않고 서비스 이용이 가능합니다.

[Apache Tomcat(톰캣)]

  • Apache는 웹서버 전용 기능이고 Apache Tomcat는 WAS 기능을 합니다.
  • Tomcat에도 기본적인 웹서버 기능이 있으며 공부하는 경우 톰캣만을 사용해서 웹서버 구성이 가능합니다.
  • 다만 Apache 웹서버에 비해 기능이 한정적이어서 규모가 있는 웹서비스는 분리해서 사용됩니다.
  • Tomcat은 WEB/WAS 기능을 가진 자바 애플리케이션이며 JAVA EE 기반으로 만들어졌습니다.
    • JAVA EE : Tomcat 등 WAS를 이용하는 서버 개발 기능을 사용
  • WAS는 자바로 만들어진 JSP, Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행합니다.
    • 컨테이너 : JSP를 서블릿으로 바꿔서 실행해 주는 역할, 서블릿의 생명주기를 관리하며 웹 환경에서 서블릿이 구동될 수 있도록 해주는 프로그램입니다.
  • WAS에서는 여러 개의 컨테이너를 구성해서 각각 독립적인 서비스로 구동 가능 합니다.
  • WAS의 컨테이너는 웹서버에서 보내준 요청을 가지고 스레드를 생성한 후 필요한 Jsp, Servlet 파일을 구동해서 로직을 수행 후 결과로 생성된 응답 객체를 웹서버로 보내주는 역할을 합니다.
  • 단일 WAS, 컨테이너만 사용하는 경우 WAS와 컨테이너를 구분해서 생각할 필요 없습니다.
728x90
반응형

'백수 > java' 카테고리의 다른 글

11. 제너릭이 무엇인가요?  (0) 2023.07.28
MyBatis 란  (0) 2023.07.27
10. Servlet과 JSP를 비교해서 설명하세요  (0) 2023.07.25
직렬화  (0) 2023.07.18
JDBC란  (0) 2023.07.18