관리 메뉴

CASSIE'S BLOG

90강 스프링 부트와 서블릿컨테이너 (부제: 서버 흐름 파악하기) 실습 따로 없음 본문

PROGRAMMING/슈퍼코딩 강의 정리

90강 스프링 부트와 서블릿컨테이너 (부제: 서버 흐름 파악하기) 실습 따로 없음

ITSCASSIE1107 2024. 1. 1. 14:55

 

 

 

백엔드 서버를 배포한다는 것은 웹 애플리케이션 서버를 배포한다라는 말만 똑같다고 함. 

 

 

크롬에서 뭘 검색어를 하면 그게 구글 WAS로 가는거다. 
WAS는 세부적으로 2개로 나뉘어져있음
웹과 서블릿컨테이너로 

 

 

 

백엔드를 개발한다는 것은 WAS를 개발하는거다.

 

서블릿컨테이너 위에 스프링이 돌아감.

 

 

Spring만 있는건 아니다.. sprut, 뭐 다른것들 다 프레임워크 받을 준비가 되어있다.

 

서블릿은 크게 프로토콜관련 Server 관련으로 나뉨. 

 

스프링으로 구현했다 저의 요청은 dispatcher servlet으로 가는거다. 

 

Dispatcher Servlet 이 문 같은거라서 이제 스프링 컨테이너 영역에 들어온거임.
Dispatcher Servlet이 컨트롤러를 인식하고 있다.
RestController: 클라이언트 사이드 렌더링할 때 많이 사용하는 컨트롤러
Controller: 동적인 페이지를 만드는 그냥 컨트롤러 

 

여러번 듣기 매우 좋음

16분부터~ 

 

 

 

GetMapping: http get 메소드를해놓으면 Handler Mapping이 캐치를 해준다.

 

 

model은 뭘 적어주지않아도 그냥 들고가고 view는 이름 적어야 return 들어간다.

 

 

ViewResolver가 samplePage라는 파일을 찾는다. 

 

 

 

스프링을 개발하는 것은 서블릿 컨테이너의 한 부분을 개발하는것이다. 
흐름들은 우리가 컨트롤하는 것이 아니라 서블릿 컨테이너가 흐름을 관장한다.
우리는 작은 기능이나 기존에 있는 것을 커스터마이징하는그 정도다. 

 

 


🎈실시간/동적 이라는게 굉장히 중요한 포인트다. 

 

WAS는 정적 파일 서비스뿐만 아니라 동적인 서비스를 위한 서블릿 컨테이너를 포함하고 있습니다. 이렇게 정적 파일 서비스와 서블릿 컨테이너를 함께 가지고 있는 WAS는 동적인 웹 애플리케이션을 개발하고 실행하는 데 사용됩니다.

여기에서 간단히 설명하면:

  1. 정적 파일 서비스 (Web 서버):
    • WAS는 클라이언트에게 정적인 웹 페이지나 리소스(이미지, CSS, JavaScript 파일 등)를 제공하는 역할을 합니다. 이는 WAS 내부에 내장된 웹 서버를 통해 이루어집니다.
  2. 서블릿 컨테이너 (동적인 코드 처리):
    • 동적인 웹 애플리케이션은 서블릿 컨테이너를 통해 처리됩니다. 서블릿은 Java로 작성된 서버 측 코드로, 클라이언트의 요청에 동적으로 응답을 생성합니다. 이 서블릿들은 WAS 내에서 실행되며, 클라이언트의 요청에 따라 데이터베이스와 상호 작용하거나 비즈니스 로직을 수행하는 등의 작업을 수행합니다.
  3. WAS의 역할:
    • WAS는 클라이언트로부터의 HTTP 요청을 받아 정적 파일이나 동적인 서블릿 등을 통해 적절한 응답을 생성하여 클라이언트에게 전달합니다. 이 과정에서 서블릿 컨테이너는 서블릿을 실행하고, 필요에 따라 JDBC를 통해 데이터베이스와 통신하거나 다양한 업무를 수행합니다.

결국 WAS는 웹 서버와 서블릿 컨테이너를 통합한 형태로, 동적이고 정적인 콘텐츠를 효율적으로 제공하고 실행하는 역할을 수행합니다. 이를 통해 웹 애플리케이션의 전체적인 개발과 실행 환경을 제공하고 관리합니다.

 

 


🎈 @Controller vs RestController

  • @Controller:
    • 뷰(View)를 반환합니다.
    • 전통적인 서버 사이드 렌더링을 지원합니다.
    • HTML 파일과 같은 뷰 템플릿을 사용하여 동적인 웹 페이지를 생성합니다.
  • @RestController:
    • 뷰를 반환하지 않습니다.
    • 데이터를 반환합니다.
    • JSON 또는 XML 형식의 데이터를 주로 반환하여 RESTful API를 구현합니다.

간단하게 말하면, @Controller는 웹 페이지를 생성하는 데 사용되고, @RestController는 데이터를 반환하는 데 사용됩니다.

 

 

 

🎈

 

Rest API를 하면 뷰단을 더 이쁘게 막 프론트엔드사이드에서 각종 라이브러리 더해서 할 수 있으니까 이 방향으로 발전을 한거지?
 
 

REST API를 사용하는 경우, 주로 프론트엔드와 백엔드를 분리하여 개발하는 경향이 있습니다. 이것을 "클라이언트-서버 아키텍처" 또는 "프론트엔드와 백엔드의 분리"라고 합니다.

 

프론트엔드와 백엔드가 독립적으로 개발되면, 다양한 프론트엔드 프레임워크 및 라이브러리를 사용하여 보다 동적이고 사용자 친화적인 UI를 만들 수 있습니다.

 

백엔드는 데이터를 제공하고 비즈니스 로직을 처리하며, 프론트엔드는 사용자 인터페이스를 담당합니다. 이러한 분리는 애플리케이션의 확장성, 유지보수성 및 개발 효율성을 향상시킬 수 있습니다.

반응형