본문 바로가기
Java/Spring

23.06.23) Spring 강의 노트

by NH_club 2023. 6. 23.

●웹 서버의 기본 동작 원리

  1. 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청.
  2. 웹서버는 요청을 승인하고 HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송
  3. 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 띄어 줌.

●WAS( Web Application Server)

    ● Web Server 는 HTTP의 요청을 받아들여 정적인 콘텐츠를 사용자에게 전달해 주는 역할

       동적인 컨텐츠는 웹서버 자체적으로 처리하기 어렵기 때문에 WAS에 전달함.

    ● WAS는 동적인 콘텐츠를 동작시킬 수 있음. 대표적인 WAS로는 Tomcat, JBoss 등이 있음.

●SpringBoot와 Spring

    ● Spring 프레임워크에는 AOP, IoC/Di, PSA 등 아주 강력한 핵심 기능들을 갖고 있음.

       하지만 이런 핵심 기능들을 사용하기 위해서는 많은 xml 설정이 필요했음. 이를 개선한 것이 SpringBoot임

    ● SpringBoot는 기존의 xml 설정 대신 Java의 어노테이션 기반의 설정을 사용하기에 기존에 Spring의 단점인

       많은 xml 설정을 어노테이션을 사용하여 간편하게 설정할 수 있게 함.

    ● Spring은 외부 라이브러리와 프레임워크를 사용하기 위해서는 각각의 버전들의 호환성을 직접 확인해 가며

       설정해야 했지만, SpringBoot에선 의존성에 맞게 starter로 묶어서 제공해 줌.

    ● Spring은 Tomcat을 사용하기 위해서 직접 다운로드 받고 설정하고 프로젝트에 삽입을 수동으로 했지만,

       SpringBoot에서는 기본적으로 starter-web을 dependency 설정하면 자동으로 Tomcat을 제공해 줌

●Lombok

    ● 자바에서 필수적으로 쓰이는 메서드/생성자 등을 자동 생성이 가능하도록 도와주는 라이브러리

@Getter: getter 자동 생성
@Setter: setter 자동 생성
@AllArgsConstructor: 모든 필드를 파라미터로 가진 생성자 자동 생성
@NoArgsConstructor: 기본 생성자 자동 생성
@RequiredArgsConstructor: final 제어자 필드 자동 생성

●Lombok

    ● 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램

    ● 서블릿 동작 방식

●Front Controller

    ● 위의 사진처럼 서블릿의 동작 방식에 맞춰 코드를 구현한다면 무수히 많은 Servlet 클래스를 구현해야 함. 따라서 

        Spring은 DispatcherServlet을 사용하여 Front Controller 패턴 방식으로 API 요청을 효율적으로 처리 함.

    ● Front Controller 동작 과정

● Front Controller 패턴 적용 전, 후

        서블릿의 동작 방식에 맞춰 코드 구현                      Front Controller 패턴을 적용한 컨트롤러 코드

● 정적 페이지와 동적 페이지

    ● 정적 페이지는 컨트롤러로 진입하지 않고 html 파일을 바로 요청하면 static 폴더에서 찾아서 반환해 줌

    ● 굳이 컨트롤러를 거쳐 반환하려면 thymeleaf를 dependency에서 주석 처리하면 됨 thymeleaf가 있으면

        templeates 폴더에서만 찾아서 반환 하기 때문임 정적페이지가 담긴 static 폴더는 무시

    ● 템플릿 엔진을 적용한 상태에서 static 폴더의 html 파일을 Controller를 통해서 처리하고 싶다면 아래처럼 하면 됨

@GetMapping("/html/redirect")
public String htmlStatic() {
    return "redirect:/hello.html"; //.html은 생략 가능
}

● 동적 페이지 처리 과정

  1. Client 의 요청을 Controller에서 Model 로 처리합니다.
    1. DB 조회가 필요하다면 DB 작업 후 처리한 데이터를 Model에 저장합니다.
  2. Template engine(Thymeleaf) 에게 View, Model 전달합니다.
    1. View: 동적 HTML 파일
    2. Model: View 에 적용할 정보들
  3. Template engine
    1. ViewModel을 적용 → 동적 웹페이지 생성
      1. 예) 로그인 성공 시, "로그인된 사용자의 Nickname"을 페이지에 추가
      2. Template engine 종류: 타임리프(Thymeleaf), Groovy, FreeMarker, Jade, JSP 등
  4. Client(브라우저)에게 View(동적 웹 페이지, HTML)를 전달 해줍니다.

'Java > Spring' 카테고리의 다른 글

23.06.30) Spring 강의 노트  (0) 2023.06.30
23.06.29) Spring 강의 노트  (0) 2023.06.29
23.06.26)Spring  (0) 2023.06.26
23.06.25)Spring 강의 노트  (0) 2023.06.25
23.06.24) Spring 강의 노트  (0) 2023.06.24