●웹 서버의 기본 동작 원리
- 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청.
- 웹서버는 요청을 승인하고 HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송
- 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 띄어 줌.
●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은 생략 가능
}
● 동적 페이지 처리 과정
- Client 의 요청을 Controller에서 Model 로 처리합니다.
- DB 조회가 필요하다면 DB 작업 후 처리한 데이터를 Model에 저장합니다.
- Template engine(Thymeleaf) 에게 View, Model 전달합니다.
- View: 동적 HTML 파일
- Model: View 에 적용할 정보들
- Template engine
- View에 Model을 적용 → 동적 웹페이지 생성
- 예) 로그인 성공 시, "로그인된 사용자의 Nickname"을 페이지에 추가
- Template engine 종류: 타임리프(Thymeleaf), Groovy, FreeMarker, Jade, JSP 등
- View에 Model을 적용 → 동적 웹페이지 생성
- 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 |