ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 - 간단 용어들 정리
    Web/Spring 2023. 3. 5. 21:30

    -스프링을 배우며 등장하는 용어들 조금씩 정리

     

    JSP(java Server Pages)

    HTML코드에 JAVA코드를 넣어서 동적 웹페이지를 생성하는 웹 어플리케이션 도구

    자바 언어를 기반으로 하는 Server Side 스크립트 언어이다.

    WAS에서 jsp로 작성된 프로그램은 서버로 요청시 서블릿 파일로 변환된다.

    ->jsp태그 분해 추출 -> 순수 html로 변환 

     

    Servlet

    웹 페이지를 동적으로 생성하는 서버 측 프로그램을 의미

    웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.

    정적 페이지 뿐 아니라 동적 페이지를 만들기 위해 등장 

    서블릿은 WAS(Web Application Server)의 서블릿 컨테이너 안에서 동작한다. 

     

    WAS (Web Application Server)

    웹서버 + 웹 컨테이너 

     

    -DB조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application서버

    HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로 주로 데이터베이스 서버와 같이 수행된다.

    WAS는 jsp,servlet 구동환경을 제공해주기 때문에 Servlet container or Web container라고도 불린다. 

    출처:https://helloworld-88.tistory.com/71

    서블릿 컨테이너는 서블릿을 보관하는 그릇을 의미 

    서버에 만들어진 서블릿이 스스로 작동하는 것이 아니라, 서블릿을 관리 해주는 것이 필요하고, 이러한 역할을 하는 것이 서블릿 컨테이너이다.

     

    1. 웹서버와의 통신지원

    -서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해도록 내부적으로 복잡한 과정을 처리해준다.

     

    2. 서블릿 생명주기 관리

    -서블릿의 초기화와 끝을 관리한다.

          > 서블릿 클래스를 로딩하여 인스턴스화

          > 초기화 메서드 호출 

          >  요청이 들어오면 적절한 서블릿 메서드 호출

          >  소멸 시 가비지 컬렉션 실행 

     

    3. 멀티쓰레드 지원 및 관리 

     

    4. 선언적인 보완관리

    출처:https://jordy-torvalds.tistory.com/14

    - 사용자가 URL을 클릭하여 요청을 컨테이너에 보낸다.

    - 컨테이너는 HttpServletrequest와 HttpServletResponse 객체를 생성한다.

    -사용자의 요청을 분석하여 어느 서블릿에 대한 요청인지 찾고, 쓰레드에 서블릿을 할당해서 실행하고 Request와         Response를 인자로 넘긴다. 

    - 컨테이너는 서블릿 service() 메소드를 호출하여 post 혹은 get에 따라 doget() dopost()를 호출 

    - 서블릿은 요청 처리에 대한 응답을 생성하여 response객체에 실어서 응답을 보낸다

    - 모든 작업이 끝나면 컨테이너는 request와 response객체를 소멸시키거나, 쓰레드에 할당했던 서블릿을 해제하는 일을 한다.

     

    Servlet context

    서블릿과 서블릿 컨테이너 사이의 통신을 위해 사용되어지는 메서드들을 가지고 있는 클래스이다.

    여러 서블릿에서 공유할 수 있는 정보를 담는 객체이다. 

    하나의 web application내에 하나의 servlet context가 존재한다.

    모든 서블릿들을 관리 및 정보를 공유를 도와주는 역할을 담당한다. (웹 애플리케이션의 등록 정보로 볼 수 있다.)

    톰캣

    대표적인 WAS중 하나이다. 

     

    톰캣의 내부구조

    출처:https://kadensungbincho.tistory.com/62

     

    -server(tomcat)

     

    서버는 톰캣 그 자체로 웹 애플리케이션 서버의 인스턴스이며, top-level 컴포넌트이다. 

       - 서버는 서버를 종료하기 위한 포트를 가진다.

       - 디버그 모드 설정을 통해 JVM 디버깅을 시작할 수 있다.

       - JVM에서 실행되는 한 서버에서 오류가 발생하더라도 다른 서버에는 영향을 주지 않고 분리 운영될 수 있다. 

     

    -service

     

    서비스는 컨테이너를 커넥터들과 묶는 컴포넌트이다. 

    각 서비스에는 이름이 주어진다. (각 서비스에서 발생하는 로그메세지를 관리자가 쉽게 알아볼수 있도록 하기 위해)

     

    -connector

     

    애플리케이션을 클라이언트와 연결하는 역할을 한다. 

      - 어떤 프로토콜의 요청인지 구분 -> 엔진과 연결

      - 서버 상의 포트 할당

      -  여러 개의 커넥터가 하나의 엔진 또는 엔진레벨의 컴포넌트에 설정될 수있으나, 가각 유니크한 포트를 지녀야한다.

     

    -engine

     

    엔진은 top-level컨테이너로 다른 컨테이너가 포함할 수 없다. -> 이 레벨부터 객체들이 child 컴포넌트를 가지기 시작한다.

    컨테이너는 꼭 엔진일 필요는 없지만, 보통 이 레벨의 컨테이너는 엔진이다.

     

    엔진은 하나의 컨테이너로 전체 catalina서블릿 엔진을 나타낸다. 

     -엔진은 HTTP헤더를 체크하여 특정 요청에 대해 가상 호스트 또는 어느 컨텍스트에 연결되어야 하는지 판단한다.

     

    -host

    apache virtual host와 유사하다. 

     -아파치에서 호스트는 여러 서버가 같은 머신에서 사용되며 ip주소나 호스트명에 따라 구분되도록한다. 

    - 톰켓에서 가상호스트는 완전한 호스트명으로 구분된다. 따라서 www.webfast.co.,kr  과 www.webpast.co.kr 등은 같은

      서버에 존재할 수 있다(엔진이 두 호스트를 구분해서 생각한다.)

     - 호스트를 설정하는 것은 호스트명을 설정하는 것을 포함한다. 

     - 대부분의 클라이언트는 서버 ip와 ip주소에 사용되는 호스트명을 같이보내는 방식을 취한다. 

     - 호스트명은 http 헤더로 제공되므로 엔진은 헤더를 확인해서 어느 호스트에 연결되는지 결정할 수 있다.

     

    -context

    컨텍스트는 웹 애플리케이션으로 불린다. (ex 하나의 sts프로젝트)

     -웹 앱의 설정에는 애플리케이션의 루트 폴더 위치를 엔진과 호스트에 알려주는 것을 포함한다.

     -하나의 컨텍스트안에 여러 서블릿 jsp파일 들이 존재할 수 있다.

     

     

    Reference

    - https://kadensungbincho.tistory.com/62  

    - https://sesangcoding.tistory.com/entry/JSP%EB%9E%80-Java-Server-Pages

    - https://cyk0825.tistory.com/78

    - https://helloworld-88.tistory.com/71

    - https://jordy-torvalds.tistory.com/14

    - https://docs.jboss.org/jbossas/javadoc/7.1.2.Final/javax/servlet/ServletContext.html 

    - 남궁성 spring의 정석 강의

Designed by Tistory.