728x90
- 01 Spring MVC : spring mvc에 대해서 이해하고 API를 만들어봅시다.
- MVC Model 1 아키텍처
비즈니스 로직이 늘어날때 대응하기위해 필요한 수많은 view 를 위해서 jsp 가 함께 추가되면서 불필요한 jsp 를 생성하게 되는게 문제였다.
+-----------------------------------------+ | 사용자 클라이언트(User Client) | | - 웹 브라우저, 모바일 애플리케이션 등 | | - View(Controller 포함)로부터의 요청을 | | 보내고, 사용자 인터페이스(UI)를 통해 | | 상호작용 | +-----------------------------------------+ ↑↓ ↑↓ ↑↓ +-----------------------------------------+ | View + Controller (JSP) | | - UI를 생성하고 사용자에게 표시 | | - 사용자의 요청을 처리하고, | | 데이터 처리 및 비즈니스 로직 수행 | +-----------------------------------------+ ↑↓ ↑↓ ↑↓ +-----------------------------------------+ | Model ( JavaBean ) | | - 데이터 처리, 비즈니스 로직 수행 | | - 데이터베이스(DB)와의 상호작용 | +-----------------------------------------+ ↑↓ ↑↓ ↑↓ +-----------------------------------------+ | 데이터베이스(DB) | | - 데이터의 영구적인 저장 및 관리 | | - JavaBean과의 데이터 교환 | +-----------------------------------------+ |
- MVC model 2 아키텍쳐
+----------------------------------------+ | 사용자 클라이언트(User Client) | | - 웹 브라우저, 모바일 애플리케이션 등 | | - View로부터의 요청을 보내고, | | 사용자 인터페이스(UI)를 통해 상호작용 | +----------------------------------------+ ↓ ↑ ↓ ↑ ↓ ↑ +-----------------------------+ +----------------------------+ | Controller (Servlet) | | View (JSP) | | - 사용자 입력을 받고 처리 | | - UI를 생성하고 사용자에게 | | - 비즈니스 로직 수행 및 데이터 | | 표시 | | 처리 |<-----| - 사용자의 입력을 컨트롤러로 | | - Model과 상호작용 | | 전달 | +-----------------------------+ +----------------------------+ ↓ ↑↓ ↓ ↑↓ ↓ ↑↓ +---------------------------------------------+ | Model | | - 데이터 처리, 비즈니스 로직 수행 | | - 데이터베이스와의 상호작용 | +---------------------------------------------+ ↑↓ ↑↓ ↑↓ +----------------------------------------+ | 데이터베이스(DB) | | - 데이터의 영구적인 저장 및 관리 | | - Model과의 데이터 교환 | +----------------------------------------+ |
- MVC에 대한 설명
- 02 Spring MVC
- spring mvc 요청에서 응답까지 흐름
- DispatcherServlet은 요청을 받습니다.
- DispatcherServlet은 적절한 컨트롤러를 선택하기 위해 HandlerMapping에 작업을 위임합니다. HandlerMapping은 들어오는 요청 URL에 매핑된 컨트롤러를 선택하고 선택된 핸들러와 컨트롤러를 DispatcherServlet에 반환합니다.
- DispatcherServlet은 컨트롤러의 비즈니스 로직 실행 작업을 HandlerAdapter에 위임합니다.
- HandlerAdapter는 컨트롤러의 비즈니스 로직 프로세스를 호출합니다.
- 컨트롤러는 비즈니스 로직을 실행하고 Model에 처리 결과를 설정한 후에 뷰의 논리적 이름을 HandlerAdapter에 반환합니다.
- DispatcherServlet은 뷰 이름에 해당하는 뷰를 해결하는 작업을 ViewResolver에 위임합니다. ViewResolver는 뷰 이름에 매핑된 뷰를 반환합니다.
- DispatcherServlet은 반환된 뷰에 렌더링 프로세스를 위임합니다.
- 뷰는 모델 데이터를 렌더링하고 응답을 반환합니다.
- 03 템플릿 엔진과 Thymeleaf
- 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어
- 템플릿 엔진의 필요성
- 렌더링 주체에 따른 구분
- 서버사이드 템플릿 엔진
- 클라이언트 사이드 템플릿 엔진
- 타임리프(Thymeleaf)
- 04 REST API
- 05 API 만들기 - GET
- 06 API 만들기- POST
- 07 API 만들기 - PUT, DELETE
- api 만들기
- @RequestMapping
- Value와 Method로 정의하여 API를 개발하는 방식
- Value는 URI, Method는 HTTP Method를 지정
- ex) localhost:8080/hello 를 주소창에 쳤을때 아래 요청매핑 코드에 의해서 http get 메소드가 호출되도록 매핑된다.
@RequestMapping(value="/hello", method= RequestMethod.GET) public String getHello() { return "hello"; } |
- @GetMapping
@GetMapping(value="/hello") public String getHello() { return "hello"; } |
- ‘Value=’생략 가능 아래코드는 위의 코드와 동일하다.
@GetMapping("/hello") public String getHello() { return "hello"; } |
- @PathVariable
@GetMapping("/hello/{username}") public String hello(@PathVariable(value="username") String username) { return "hello" + username; } |
- @GetMapping value 표현 내 {value}와 @PatheVariable 변수 이름이 일치하는 경우 생략 가능
@GetMapping("/hello/{username}") public String hell(@PathVariable String username) { return "hello" + username; } |
- @pathVariable 변수의 이름과 함수 매개변수의 이름이 다르게도 사용가능
@GetMapping("/hello/{username}") public String hell(@PathVariable(value=”username”) String str) { return "hello" + str; } |
- @RequestParam
@GetMapping("/hello") public String helloRequestParam(@RequestParam Map<String, String> params) { StringBuilder sb = new StringBuilder(); params.forEach(Key, value) -> { sb.append(key + " : " + value + "\n"); }); return sb.toString(); } |
추천인 코드 : o6i4B3y95 : 앨리스트랙 참여 링크
#엘리스트랙 #엘리스트랙후기 #온라인코딩부트캠프 #온라인코딩학원 #백엔드학원 #개발자국비지원 #개발자부트캠프 #국비지원부트캠프 #DOCKER #백엔드 #자바스프링 #스프링강의 #백엔드인강 #RESTAPI #스프링개발자
728x90
'Elice --Cloud--Track > 8~9 주차 ( 개인프로젝트 )' 카테고리의 다른 글
9주차 블로그 챌린지 - Spring Boot - 웹서비스 게시판 만들기 (1) | 2024.01.21 |
---|---|
9 주차 블로그 챌린지 - 1차 팀플 후기 (0) | 2024.01.21 |